1. Задавайте здесь вопросы о коде, которые не подходят в другие разделы, такие как:
    Дизайн > Верстка
    PHP > Как сделать на PHP
    Скрыть объявление

Вопрос по curl

Тема в разделе "Web Coding", создана пользователем Tretiy, 20 фев 2008.

Статус темы:
Закрыта.
Модераторы: latteo
  1. Tretiy

    Tretiy Постоялец

    Заблокирован
    Регистр.:
    10 дек 2007
    Сообщения:
    81
    Симпатии:
    9
    Привет!
    Есть задача объеденённый поиск на одной странице, который будет искать по 15-ти сайтам. Решаю задачу с помощью curl, но возникла проблема с asp.
    Вот пример кода, который работает на сайтах написанных на php:

    PHP:
    <?php

    $url 
    "http://www.nepia.com/search/vessel_search.php";
    $ch curl_init();
    curl_setopt($chCURLOPT_URL,$url); // set url to post to
    curl_setopt($chCURLOPT_FAILONERROR1);
    curl_setopt($chCURLOPT_FOLLOWLOCATION1);// allow redirects
    curl_setopt($chCURLOPT_RETURNTRANSFER,1); // return into a variable
    curl_setopt($chCURLOPT_TIMEOUT3); // times out after 4s
    curl_setopt($chCURLOPT_POST1); // set POST method
    curl_setopt($chCURLOPT_POSTFIELDS"txtVessel=".$_GET['s']); // add POST fields
    $result curl_exec($ch); // run the whole process
    curl_close($ch);
    print 
    $result;
    ?>
    На asp создаются ещё какие-то переменные при запросе, но не понимаю их смысла. С асп не знаком.
    Кто-то может помочь?

    пример такого поиска http://www.standard-club.com/content/ME-ShipsEntered.aspx
     
  2. lexesv

    lexesv

    Регистр.:
    15 ноя 2006
    Сообщения:
    219
    Симпатии:
    103
    Надо в CURLOPT_POSTFIELDS передавать вот эти все переменные (взято из приведённого тобой примера:(
    __EVENTTARGET=&__EVENTARGUMENT=&__VIEWSTATE=Search=&txtShipName=$_GET['s']&ddResultsPerPage=20&btnSearch=Search

    Особенно обрати внимание на __VIEWSTATE
    значание этой переменной генерится как то, скорее всего это какой то идентификатор передаётся
    попробуй сначала с пустым значением, если не прокатит - значит попытайся его вычислить

    вот её поле
    <input type="hidden" name="__VIEWSTATE" value="dDwtNTkxMzY1MDE7dDxwPGw8U3RhcnQ7PjtsPDA7Pj47bDxpPDE+Oz47bDx0PDtsPGk8MT47aTw1PjtpPDc+Oz47bDx0PDtsPGk8MT47aTwzPjs+O2w8dDxwPHA8bDxUZXh0Oz47bDwmbmJzcFw7Oz4+Oz47Oz47dDxwPHA8bDxJbWFnZVVybDs+O2w8L2ltYWdlcy9oZWFkZXJzL1dob1dlQXJlLmpwZzs+Pjs+Ozs+Oz4+O3Q8cDxsPHN0eWxlOz47bDxESVNQTEFZOmJsb2NrXDs7Pj47Oz47dDxwPGw8c3R5bGU7PjtsPERJU1BMQVk6bm9uZVw7Oz4+Ozs+Oz4+Oz4+O2w8SGVhZGVyMTpidG5TZWFyY2g7Pj6pBWDzGd9Ac689Kmg3TX3aDI26dQ==" />

    если величина постоянная при одном клиенте и том же айпи, то просто сначала распарси её а потом уже передавай в курл.
    но забирай начальную страницу тоже курлом.
    и добавь поддержку куков в курл.
    $path_ = pathinfo($_SERVER[SCRIPT_FILENAME]);
    $ScriptDir=$path_['dirname'];
    $CookieFile=$ScriptDir."/tmp/cookie.txt";

    curl_setopt($ch, CURLOPT_COOKIEFILE, $CookieFile);
    curl_setopt($ch, CURLOPT_COOKIEJAR, $CookieFile);
     
    Tretiy нравится это.
Статус темы:
Закрыта.