Помогите разобраться с fsockopen()

Тема в разделе "PHP", создана пользователем kaktyc1, 5 май 2009.

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

    kaktyc1

    Регистр.:
    30 апр 2008
    Сообщения:
    576
    Симпатии:
    310
    В примерах нашел код и немного переделал:
    PHP:
    <?php
    $fp 
    fsockopen("www.example.com"80$errno$errstr30);
    if (!
    $fp) {
        echo 
    "$errstr ($errno)<br />\n";
    } else {
        
    $out "POST /index.php HTTP/1.1\n";
        
    $out .= "Host: www.example.com\r\n";
        
    $out .= "Content-Type: application/x-www-form-urlencoded\n";
        
    $out .= "Content-Length: 4\n\n";
        
    $out .= "test\n\n";

        
    fwrite($fp$out);
        while (!
    feof($fp)) {
            echo 
    fgets($fp128);
        }
        
    fclose($fp);
    }
    ?> 
    Вопроса 2:
    1.Как правильно получить переданные параметры, сейчас получаю их из $_REQUEST.
    2.Нужно обратно передать определенные значения, и вот тут я не пойму, что должно быть прописано в index.php для того, чтобы обратившийся скрипт получил обратно какую либо строку.
     
  2. Sangre

    Sangre Постоялец

    Регистр.:
    12 ноя 2008
    Сообщения:
    51
    Симпатии:
    6
    1. через $_POST
    2. выводи ответ в вывод и читай его, только хедеры вёб-сервера выруби из него

    а так юзай curl
     
  3. kaktyc1

    kaktyc1

    Регистр.:
    30 апр 2008
    Сообщения:
    576
    Симпатии:
    310
    а можно кусочек кода? например что бы получить ответ ОК, а то сейчас незнаю как вернуть что либо...
     
  4. Sangre

    Sangre Постоялец

    Регистр.:
    12 ноя 2008
    Сообщения:
    51
    Симпатии:
    6
    http://www.php.ru/manual/ref.curl.html
     
  5. vivid

    vivid Постоялец

    Регистр.:
    13 апр 2009
    Сообщения:
    143
    Симпатии:
    18
    пример не могу привести т.к. в основном гетами отправляю запросы для сервисов. но воспользовавшись гуглопоиском можно найти http://www.askapache.com/security/curl-google-post-feed.html

    PHP:
    $url="http://www.google.com/reader/directory/search?q=$feedurl&ck=1199813768546&client=scroll";
    $postdata="Email=$username&Passwd=$password&GA3T=5AS_gBsvDHI&nui=15&".
    "fpui=3&service=reader&ifr=true&askapache=lovesgoogle&rm=hide&itmpl=true&hl=en&alwf=true&continue=".
    $url."&null=Sign in"// закодированные данные для отправки через & пары параметр=значение.

    $ch curl_init("https://www.google.com/accounts/ServiceLoginBoxAuth");
    curl_setopt ($chCURLOPT_SSL_VERIFYPEERFALSE);
    curl_setopt ($chCURLOPT_RETURNTRANSFER1);
    curl_setopt ($chCURLOPT_COOKIEJAR$google_cookie);
    curl_setopt ($chCURLOPT_COOKIEFILE$google_cookie);
    curl_setopt ($chCURLOPT_POSTFIELDS$postdata); // передавать закодированные поля в параметре CURLOPT_POSTFIELDS
    curl_setopt ($chCURLOPT_POST1); // установить этот флажочек обязательно
    $askapache_curl_google_result curl_exec ($ch);
    curl_close($ch);
    $s=array('@<noscript[^>]*?>.*?</noscript>@si','@<script[^>]*?>.*?</script>@si','@<style[^>]*?>.*?</style>@siU','@<![\s\S]*?--[ \t\n\r]*>@');
    $g=preg_replace($s''$askapache_curl_google_result);
    $g=preg_match('@href="([^"]*?)"@si',$g,$m);

    $ch curl_init($m[1]); // тут не правильно - можно не инициализировать заного дескриптор - можно установить параметр curl_setopt($ch,CURLOPT_URL,$m[1]) - но может быть у автора были причиня для переинициализации
    curl_setopt ($chCURLOPT_SSL_VERIFYPEERFALSE);
    curl_setopt ($chCURLOPT_RETURNTRANSFER1);
    curl_setopt ($chCURLOPT_COOKIEJAR$google_cookie);
    curl_setopt ($chCURLOPT_COOKIEFILE$google_cookie);
    $askapache_curl_google_result curl_exec ($ch);
    curl_close($ch);

     
  6. kaktyc1

    kaktyc1

    Регистр.:
    30 апр 2008
    Сообщения:
    576
    Симпатии:
    310
    Т.е. index.php должен выглядеть так?:
    PHP:
    <?php
    echo 'YES/n';
    ?>
     
  7. kaktyc1

    kaktyc1

    Регистр.:
    30 апр 2008
    Сообщения:
    576
    Симпатии:
    310
    А как без curl как сделать? И еще вопрос:
    цикл
    PHP:
        while (!feof($fp)) {
            echo 
    fgets($fp128);
        }
        
    fclose($fp);
    отрабатывает до бесконечности, т.е. скрипт никогда из цикла не выходит.
     
  8. PHP_Master

    PHP_Master

    Регистр.:
    3 фев 2008
    Сообщения:
    2.647
    Симпатии:
    590
    Опиши ка проблему понятно, а то ни фига не понятно :)

    Что сделать? Если ответ на запрос, то тебе уже ответили - простое echo.

    Покажи код и урл на котором тестируешь, проверим.

    Хотя тебе дело говорят, curl удобнее использовать чем сокеты.
     
  9. myweb

    myweb Среда обитания WEB

    Регистр.:
    10 сен 2007
    Сообщения:
    539
    Симпатии:
    246
    функция feof($fp) всегда найдет конец :read::D
     
  10. kaktyc1

    kaktyc1

    Регистр.:
    30 апр 2008
    Сообщения:
    576
    Симпатии:
    310
    Может и находит, но у меня для отладки в цикл и после цикла вписана функция для запись лога, так вот после цикла записи нет, а то, что внутри цикла записывается несколько раз. И всетаки остается вопрос, как убрать заголовок и как этому скрипту вернуть с запрошенного адреса какую либо строку.
     
Статус темы:
Закрыта.