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

Статус
В этой теме нельзя размещать новые ответы.

kaktyc1

Мой дом здесь!
Регистрация
30 Апр 2008
Сообщения
576
Реакции
313
В примерах нашел код и немного переделал:
PHP:
<?php
$fp = fsockopen("www.example.com", 80, $errno, $errstr, 30);
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($fp, 128);
    }
    fclose($fp);
}
?>

Вопроса 2:
1.Как правильно получить переданные параметры, сейчас получаю их из $_REQUEST.
2.Нужно обратно передать определенные значения, и вот тут я не пойму, что должно быть прописано в index.php для того, чтобы обратившийся скрипт получил обратно какую либо строку.
 
1. через $_POST
2. выводи ответ в вывод и читай его, только хедеры вёб-сервера выруби из него

а так юзай curl
 
1. через $_POST
2. выводи ответ в вывод и читай его, только хедеры вёб-сервера выруби из него

а так юзай curl

а можно кусочек кода? например что бы получить ответ ОК, а то сейчас незнаю как вернуть что либо...
 
пример не могу привести т.к. в основном гетами отправляю запросы для сервисов. но воспользовавшись Для просмотра ссылки Войди или Зарегистрируйся можно найти Для просмотра ссылки Войди или Зарегистрируйся

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 ($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt ($ch, CURLOPT_COOKIEJAR, $google_cookie);
curl_setopt ($ch, CURLOPT_COOKIEFILE, $google_cookie);
curl_setopt ($ch, CURLOPT_POSTFIELDS, $postdata); // передавать закодированные поля в параметре CURLOPT_POSTFIELDS
curl_setopt ($ch, CURLOPT_POST, 1); // установить этот флажочек обязательно
$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 ($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt ($ch, CURLOPT_COOKIEJAR, $google_cookie);
curl_setopt ($ch, CURLOPT_COOKIEFILE, $google_cookie);
$askapache_curl_google_result = curl_exec ($ch);
curl_close($ch);
 
А как без curl как сделать? И еще вопрос:
цикл
PHP:
    while (!feof($fp)) {
        echo fgets($fp, 128);
    }
    fclose($fp);
отрабатывает до бесконечности, т.е. скрипт никогда из цикла не выходит.
 
Опиши ка проблему понятно, а то ни фига не понятно :)

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

отрабатывает до бесконечности, т.е. скрипт никогда из цикла не выходит.
Покажи код и урл на котором тестируешь, проверим.

Хотя тебе дело говорят, curl удобнее использовать чем сокеты.
 
А как без curl как сделать? И еще вопрос:
цикл
PHP:
    while (!feof($fp)) {
        echo fgets($fp, 128);
    }
    fclose($fp);
отрабатывает до бесконечности, т.е. скрипт никогда из цикла не выходит.

функция feof($fp) всегда найдет конец :read::D
 
функция feof($fp) всегда найдет конец :read::D

Может и находит, но у меня для отладки в цикл и после цикла вписана функция для запись лога, так вот после цикла записи нет, а то, что внутри цикла записывается несколько раз. И всетаки остается вопрос, как убрать заголовок и как этому скрипту вернуть с запрошенного адреса какую либо строку.
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху