Версия для печати
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум на Исходниках.RU > PHP > Помогите с CURL


Автор: secondvad2 27.10.11, 11:53
Всем привет,
задачка одновременно простая и интересная, -пишу робота который будет отслеживать доставку груза по номеру накладной вот этой компании, Вот по этой ссылке

С CURL раньше работал но с методом ГЕТ.
Накидал вот такой код (брал из примера)
<{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}>
      $uagent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322)";
     
      $url=' Наша ссылка, см в тексте';
     
      $postdata="trace1=11-5072-5400"; // номер накладной для примера
     
      $ch = curl_init( $url );
      curl_setopt($ch, CURLOPT_URL, $url);
      curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
      curl_setopt($ch, CURLOPT_HEADER, 0);
      curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
      curl_setopt($ch, CURLOPT_ENCODING, "");
      curl_setopt($ch, CURLOPT_USERAGENT, $uagent);
      curl_setopt($ch, CURLOPT_TIMEOUT, 120);
      curl_setopt($ch, CURLOPT_FAILONERROR, 1);
      curl_setopt($ch, CURLOPT_AUTOREFERER, 1);
      curl_setopt($ch, CURLOPT_POST, 1);
      curl_setopt($ch, CURLOPT_POSTFIELDS, $postdata);
    //  curl_setopt($ch, CURLOPT_COOKIEJAR, "z://coo.txt");
     // curl_setopt($ch, CURLOPT_COOKIEFILE,"z://coo.txt");
     
     
      $content= curl_exec( $ch );
      $err     = curl_errno( $ch );
      $errmsg  = curl_error( $ch );
      $header  = curl_getinfo( $ch );
      curl_close( $ch );
     
     
        echo $content;
      $header['errno']   = $err;
      $header['errmsg']  = $errmsg;
      $header['content'] = $content;
      return $header;


Скрипт нормально выводит мне весь контент страницы, но как я понимаю сам ПОСТ запрос не срабатывает, так как не вижу данных о доставке.
В коде страницы, я нашел скрытое поле, и попробовал изменить пост данные
<{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}>
    $postdata="trace1=11-5072-5400&trace_mode=1";
Но тоже ничего не вышло..

В чем засада?

Автор: Demon_id 27.10.11, 12:23
<{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}>
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);

вот эта штука криво работает при определённых обстоятельствах.

Автор: secondvad2 27.10.11, 12:29
Отключил, результата не дало.(

Автор: panaslonik 27.10.11, 12:57
Еще там есть trace_submit

Автор: secondvad2 27.10.11, 13:01
panaslonikТОЧНО!
Я об этож помнил, и сначала составил такой пост
<{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}>
    $postdata="trace1=11-5072-5400&trace_mode=1&trace_submit";

и сразу не заметил что в конце переменной должен стоять знак "="
Добавил его и заработало)
<{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}>
    $postdata="trace1=11-5072-5400&trace_mode=1&trace_submit=";


спасибо тебе!!

Автор: Pr0[)!9Y 27.10.11, 21:31
Цитата Demon_id @
вот эта штука криво работает при определённых обстоятельствах.
м?

Автор: Demon_id 28.10.11, 08:13
Цитата Pr0[)!9Y @
Цитата (Demon_id @ Вчера, 15:23)
вот эта штука криво работает при определённых обстоятельствах.
м?

CURLOPT_FOLLOWLOCATION cannot be activated when in safe_mode or an open_basedir is set

Автор: Pr0[)!9Y 28.10.11, 11:23
А, это. Ну он об этом сообщает, так что он не работает совсем. А не криво

Powered by Invision Power Board (https://www.invisionboard.com)
© Invision Power Services (https://www.invisionpower.com)