За последние 24 часа нас посетили 60724 программиста и 1743 робота. Сейчас ищут 914 программистов ...

Как послать данные методом POST через cURL

Тема в разделе "Прочие вопросы по PHP", создана пользователем pr0n1x, 26 дек 2007.

  1. pr0n1x

    pr0n1x Активный пользователь

    С нами с:
    30 мар 2006
    Сообщения:
    486
    Симпатии:
    2
    Адрес:
    Киев
    Код (Text):
    1.  
    2. $url = "https://www.test.com/";
    3. $post_str = "param1=1&param2=2&param3=3";
    4.  
    5. $ch = curl_init();
    6.  
    7. curl_setopt($ch, CURLOPT_URL, $url);
    8. curl_setopt($ch, CURLOPT_HEADER, 0);
    9. curl_setopt($ch, CURLOPT_POST, 1);
    10. curl_setopt($ch, CURLOPT_POSTFIELDS, $post_str);
    11.    
    12. curl_exec($ch);
    13. curl_close($ch);
    Скрипт выполняется, но сама переадресация не происходит.
    cURL работает, обычный пример с мануала работает.

    И еще такой вопрос, если у меня курл выполняется со скрипта curl.php, то загружается страничка которую я указал, но адрес в браузерной строке указывает на страничку curl.php. Можно ли сделать, чтобы когда грузится новая страничка, то в адресной строке указывался настоящий адрес?
     
  2. 440Hz

    440Hz Старожил
    Команда форума Модератор

    С нами с:
    21 дек 2012
    Сообщения:
    8.003
    Симпатии:
    1
    Адрес:
    Оттуда
    нет

    а что должно быть-то? приведи реальные данные
     
  3. pr0n1x

    pr0n1x Активный пользователь

    С нами с:
    30 мар 2006
    Сообщения:
    486
    Симпатии:
    2
    Адрес:
    Киев
    Должна грузиться новая страничка....

    Вообщем я просто метод неправильный выбрал??
    Мне нужно из скрипта, методом POST передать данные другой страничке и чтобы она грузилась, как это правильно сделать?
     
  4. 440Hz

    440Hz Старожил
    Команда форума Модератор

    С нами с:
    21 дек 2012
    Сообщения:
    8.003
    Симпатии:
    1
    Адрес:
    Оттуда
    как ты делаешь.
    ты реальные данные-то приведи? умелец...
     
  5. pr0n1x

    pr0n1x Активный пользователь

    С нами с:
    30 мар 2006
    Сообщения:
    486
    Симпатии:
    2
    Адрес:
    Киев
    я же в самом начале написал код как я это делаю...

    PHP:
    1.  
    2. $url = "https://www.test.com/";
    3. $post_str = "param1=1&param2=2&param3=3";
    4.  
    5. $ch = curl_init();
    6.  
    7. curl_setopt($ch, CURLOPT_URL, $url);
    8. curl_setopt($ch, CURLOPT_HEADER, 0);
    9. curl_setopt($ch, CURLOPT_POST, 1);
    10. curl_setopt($ch, CURLOPT_POSTFIELDS, $post_str);
    11.    
    12. curl_exec($ch);
    13.  
     
  6. vasa_c

    vasa_c Активный пользователь

    С нами с:
    22 мар 2006
    Сообщения:
    1.760
    Симпатии:
    0
    Адрес:
    гор.Ленинград
    HTML:
    1. <form method="post" action="другая страничка">
    ?
     
  7. 440Hz

    440Hz Старожил
    Команда форума Модератор

    С нами с:
    21 дек 2012
    Сообщения:
    8.003
    Симпатии:
    1
    Адрес:
    Оттуда
    вот эти...
     
  8. pr0n1x

    pr0n1x Активный пользователь

    С нами с:
    30 мар 2006
    Сообщения:
    486
    Симпатии:
    2
    Адрес:
    Киев
    $url = "https://paypal.com/cgi-bin/webscr";

    $post_str = "cmd=".tourl("_xclick");
    $post_str.= "&business=".tourl($business);
    $post_str.= "&item_name=".tourl(date("Y-m-d H:i"));
    $post_str.= "&item_number=".tourl($item);
    $post_str.= "&amount=".tourl($amount);
    $post_str.= "&invoice=".tourl($item);
    $post_str.= "&currency_code=".tourl("USD");
    $post_str.= "&no_shipping=".tourl("1");
    $post_str.= "&add=".tourl("1");
    $post_str.= "&rm=".tourl("2");
    $post_str.= "&no_note=".tourl("1");
    $post_str.= "&upload=".tourl("1");
    $post_str.= "&notify_url=".tourl(WEB_SERVER_NAME."ipn.php");
    $post_str.= "&return=".tourl(HTTPS_WEB_SERVER_NAME_VENDORS."payment_complete.php");
    $post_str.= "&cancel_return=".tourl(HTTPS_WEB_SERVER_NAME_VENDORS."payment_error.php");
     
  9. 440Hz

    440Hz Старожил
    Команда форума Модератор

    С нами с:
    21 дек 2012
    Сообщения:
    8.003
    Симпатии:
    1
    Адрес:
    Оттуда
    э-э-э а с хрена тебе на пэйпал лезть? у них для всех клиентов интерфесы есть.

    ну так что не работает-то? что скрипт отвечает?
     
  10. pr0n1x

    pr0n1x Активный пользователь

    С нами с:
    30 мар 2006
    Сообщения:
    486
    Симпатии:
    2
    Адрес:
    Киев
    да нифига

    PHP:
    1. $ch = curl_init();
    2.  
    3.     curl_setopt($ch, CURLOPT_URL, $url);
    4.     curl_setopt($ch, CURLOPT_HEADER, 0);
    5.     curl_setopt($ch, CURLOPT_POST, 1);
    6.     curl_setopt($ch, CURLOPT_POSTFIELDS, $post_str);
    7.     curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    8.    
    9.     $res = curl_exec($ch);
    10.     curl_close($ch);
    11.     echo $res;
    выводит пустую строку
     
  11. 440Hz

    440Hz Старожил
    Команда форума Модератор

    С нами с:
    21 дек 2012
    Сообщения:
    8.003
    Симпатии:
    1
    Адрес:
    Оттуда
  12. wtfowned

    wtfowned Активный пользователь

    С нами с:
    4 окт 2007
    Сообщения:
    37
    Симпатии:
    0
    Сорри что не в тему .
    Пытаюсь использовать мультипоточность в курл .
    Есть 2 вопроса .
    Первый :
    Код (Text):
    1.  
    2. // start performing the request
    3. do {
    4.   $mrc = curl_multi_exec($mh, $active);
    5. } while ($mrc == CURLM_CALL_MULTI_PERFORM);
    6.  
    7. while ($active and $mrc == CURLM_OK) {
    8.   // wait for network
    9.   if (curl_multi_select($mh) != -1) {
    10.     // pull in any new data, or at least handle timeouts
    11.     do {
    12.       $mrc = curl_multi_exec($mh, $active);
    13.     } while ($mrc == CURLM_CALL_MULTI_PERFORM);
    14.   }
    15. }
    16.  
    17. if ($mrc != CURLM_OK) {
    18.   print "Curl multi read error $mrc\n";
    19. }
    В чем здесь смысл цикла while ?
    В чем отличие от обычного использования multi_exec ?
    Код (Text):
    1.  
    2. do {
    3.     curl_multi_exec($mh,$running);
    4. } while ($running > 0);
    -----
    Второй вопрос :
    коммент одного человека :
    Что он имеет ввиду ? Что если много потоков , то скрипт не может выполняться меньше чем 30 сек ?
    У меня что-то в этом роде . Получаю свою страницу на локалхосте допустим в 10 потоков - 0.04 сек .
    В 50 потоков - 0.20-0.28 сек . В 100 потоков - от 8 сек . В 1000 потоков - уже секунд 45 , но результат сохраняется только для 80-180 запросов из 1000 . Никак не могу понять , в чем причина .
     
  13. Ti

    Ti Активный пользователь

    С нами с:
    3 июл 2006
    Сообщения:
    2.378
    Симпатии:
    1
    Адрес:
    d1.ru, Екатеринбург
    pr0n1x

    вместо $post_str передавайте хеш

    PHP:
    1. <?
    2. $data = array(
    3.     'foo' => 'bar',
    4. );
    5.  
    6. curl_setopt($ch, CURLOPT_POSTFIELDS, $data);