Данные Сообщения PHP с Fsockopen

Я пытаюсь отправить данные с помощью fsockopen, и затем возвращая результат. Вот мой текущий код:

<?php
$data="stuff=hoorah\r\n";
$data=urlencode($data);

$fp = fsockopen("www.website.com", 80, $errno, $errstr, 30);
if (!$fp) {
    echo "$errstr ($errno)<br />\n";
} else {
    $out = "POST /script.php HTTP/1.0\r\n";
    $out .= "Host: www.webste.com\r\n";
    $out .= 'Content-Type: application/x-www-form-urlencoded\r\n';
    $out .= 'Content-Length: ' . strlen($data) . '\r\n\r\n';
    $out .= "Connection: Close\r\n\r\n";
    fwrite($fp, $out);
    while (!feof($fp)) {
        echo fgets($fp, 128);
    }
    fclose($fp);
}
?> 

Это, как предполагается, повторяет страницу, и это повторяет страницу, но здесь является сценарием для script.php

<?php
echo "<br><br>";    
$raw_data = $GLOBALS['HTTP_RAW_POST_DATA'];  
 parse_str( $raw_data, $_POST );

//test 1
var_dump($raw_data);
echo "<br><br>":
//test 2
print_r( $_POST );  
?>

Результат:

HTTP/1.1 200 хорошо Дата: вторник, 02 марта 2010 22:40:46 Сервер GMT: Apache/2.2.3 (CentOS) X-Powered-By: PHP/5.2.6 Довольная Длина: 31 Соединение: близкий Тип контента: текст/HTML; charset=UTF-8 строка (0) "" Массив ()

Что я имею неправильно? Почему переменная не отправляет свои данные?

10
задан Jason 5 January 2012 в 11:41
поделиться

4 ответа

Ни при каких обстоятельствах не записываются $ data в сокет. Вы хотите добавить что-то вроде:

$out .= "Connection: Close\r\n\r\n";
fwrite($fp, $out);
fwrite($fp, $data);
1
ответ дан 3 December 2019 в 21:59
поделиться

Попробуйте вместо этого

$out .= 'Content-Length: ' . strlen($data) . '\r\n';
$out .= "Connection: Close\r\n\r\n";
$out .= $data;
1
ответ дан 3 December 2019 в 21:59
поделиться

Попробуйте следующее:

<?php
$data="stuff=hoorah\r\n";
$data=urlencode($data);

$fp = fsockopen("www.website.com", 80, $errno, $errstr, 30);
if (!$fp) {
    echo "$errstr ($errno)<br />\n";
} else {
    $out = "POST /script.php HTTP/1.0\r\n";
    $out .= "Host: www.webste.com\r\n";
    $out .= "Content-Type: application/x-www-form-urlencoded\r\n";
    $out .= 'Content-Length: ' . strlen($data) . "\r\n\r\n";
    $out .= "Connection: Close\r\n\r\n";
    fwrite($fp, $out);
    fwrite($fp, $data);
    while (!feof($fp)) {
        echo fgets($fp, 128);
    }
    fclose($fp);
}
?> 

Некоторые экранированные символы, такие как \ n , не работают в одинарных кавычках.

1
ответ дан 3 December 2019 в 21:59
поделиться

Используется ли cURL и параметр?

-2
ответ дан 3 December 2019 в 21:59
поделиться
Другие вопросы по тегам:

Похожие вопросы: