fsockopen демо на локальном хосте - PullRequest
2 голосов
/ 08 декабря 2011

Может кто-нибудь помочь мне разобраться с проблемой fsockopen в localhost.

Я создал fsock.php, чтобы опубликовать переменную для test121.php в той же папке. http://localhost/ftp/fsock.php

<?php
$fp = fsockopen('localhost/ftp');

$vars = array(
    'hello' => 'world'
);
$content = http_build_query($vars);

fwrite($fp, "POST /test121.php HTTP/1.1\r\n");
fwrite($fp, "Host: localhost/ftp \r\n");
fwrite($fp, "Content-Type: application/x-www-form-urlencoded\r\n");
fwrite($fp, "Content-Length: ".strlen($content)."\r\n");
fwrite($fp, "Connection: close\r\n");
fwrite($fp, "\r\n");

fwrite($fp, $content);

header('Content-type: text/plain');
while (!feof($fp)) {
    echo fgets($fp, 1024);
}?>

Это был код в test121.php http://localhost/ftp/test121.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 );  
?>

Я получаю Не удалось разобрать адрес Ошибка в fsock.php. Кто-нибудь может объяснить мне, как решить эту проблему в localhost. Заранее спасибо.

1 Ответ

2 голосов
/ 08 декабря 2011

fsock.php

$fp = fsockopen("localhost", 80, $errno, $errstr, 30);

$vars = array(
    'hello' => 'world'
);
$content = http_build_query($vars);

fwrite($fp, "POST http://localhost/ftp/test121.php HTTP/1.1\r\n");
fwrite($fp, "Host: localhost \r\n");
fwrite($fp, "Content-Type: application/x-www-form-urlencoded\r\n");
fwrite($fp, "Content-Length: ".strlen($content)."\r\n");
fwrite($fp, "Connection: close\r\n");
fwrite($fp, "\r\n");

fwrite($fp, $content);

header('Content-type: text/plain');
while (!feof($fp)) {
    echo fgets($fp, 1024);
}?>

И вы также можете изменить test121.php и удалить $ GLOBALS (не знаю, зачем вы это используете):

<?php
echo "<br><br>";    
$raw_data = $_POST;

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