|
|
|
| Всем привет.
Подскажите разумно ли отправлять данные методом POST через сокеты, при появлении get параметра?
Как еще можно это сделать? | |
|
|
|
|
|
|
|
для: *m*
(06.11.2011 в 21:54)
| | Довольно часто данные передаются одновременно и GET и POST методами... а что смущает? | |
|
|
|
|
|
|
|
для: cheops
(06.11.2011 в 21:57)
| | ну например, когда, я отправляю все данные в строке, все быстро, а когда начинаю отправлять через сокеты часть данных, все ваще виснет.. вот я и подумал, что может это не правильно..
вот что я делаю:
<?
if(isset($_GET[page])){
$hostname= "www.domen.ru";
$path= "/test.php?page=$_GET[page]";
$line="";
$fp=fsockopen($hostname, 80, $errno, $errstr, 30);
if(!$fp) echo "$errstr($errno)<br>/>\n";
else
{
//данные HTTP-запроса
$data = "a=$_POST[a]&b=$_POST[b]";
$headers="POST $path HTTP/1.1\r\n";
$headers.= "Host: $hostname\r\n";
$headers.= "Content-type: application/x-www-form-urlencoded\r\n";
$headers.="Content-Length: ".strlen($data)."\r\n\r\n";
fwrite($fp, $headers.$data);
while(!feof($fp))
{
$line.=fgets($fp, 1024);
}
fclose($fp);
}
echo "<pre>";
echo $line ;
echo "</pre>";
}
?>
|
| |
|
|
|
|
|
|
|
для: *m*
(06.11.2011 в 22:11)
| | подскажите, если так правильно, то почему у меня все виснет, если я передаю GET[page]?? | |
|
|
|
|
|
|
|
для: *m*
(07.11.2011 в 00:24)
| | Данные отправляете с сервера или с локальной машины (Windows или Linux)? | |
|
|
|
|
|
|
|
для: cheops
(07.11.2011 в 00:40)
| | с локальной, windows | |
|
|
|
|
|
|
|
для: *m*
(07.11.2011 в 01:06)
| | попробовал на сервере, вот что вернуло:
php_network_getaddresses: getaddrinfo failed: hostname nor servname provided, or not known(0)
/>
|
| |
|
|
|
|
|
|
|
для: *m*
(07.11.2011 в 01:29)
| | подскажите что не так то, в поисковиках что-то нет информации по этому.. | |
|
|
|
|
|
|
|
для: *m*
(07.11.2011 в 01:29)
| | Хм... странно, попробуйте без www обратиться, если не поможет - трясите службу тех.поддержки, вообще должно работать. | |
|
|
|
|
|
|
|
для: *m*
(07.11.2011 в 01:06)
| | >с локальной, windows
А если HTTP 1.1 на HTTP 1.0 заменить ситуация не меняется? | |
|
|
|
|
|
|
|
для: cheops
(07.11.2011 в 12:50)
| | на локальной попробовал HTTP 1.0, тоже самое, превышен интервал времени 30 сек.
у меня денвер стоит, может он глючит?
на сервере без www, как бы в цикле вывело:
HTTP/1.1 200 OK
Server: nginx
Date: Mon, 07 Nov 2011 09:16:45 GMT
Content-Type: text/html; charset=windows-1251
Transfer-Encoding: chunked
Connection: keep-alive
Keep-Alive: timeout=5
1860
HTTP/1.1 200 OK
Server: nginx
Date: Mon, 07 Nov 2011 09:16:46 GMT
Content-Type: text/html; charset=windows-1251
Transfer-Encoding: chunked
Connection: keep-alive
Keep-Alive: timeout=5
1418
|
итд, и в конце 302 found и в location указан cgi error | |
|
|
|
|
|
|
|
для: *m*
(07.11.2011 в 13:25)
| | Т.е. перебрасывают вас на страницу ошибок? А что это вообще за страница, к чему обращаетесь? В браузере она работает стабильно? | |
|
|
|
|
|
|
|
для: cheops
(07.11.2011 в 13:48)
| | ну да в браузере норм все, старница обычная тестовая там ссылка, передающая гет и вот этот код, который по появлению гета, должен отправить пост. все.
не знаю как, но на локальном заработало, то есть виснуть перестало, теперь отдает 404 ошибку, но опять не понятно почему..
у меня в папке home, есть папка gettest, в ней www, в ней файл index.php
файл index.php
print "<a href='index.php?page=1'>GET[page] = 1</a>";
if(isset($_GET[page])){
print $POST['name'];
$hostname = "localhost";
$path = "/gettest/index.php?page=1";
$line = "";
// Устанавливаем соединение, имя которого
// передано в параметре $hostname
$fp = fsockopen($hostname, 80, $errno, $errstr, 30);
// Проверяем успешность установки соединения
if (!$fp) echo "$errstr ($errno)<br />\n";
else
{
// Данные HTTP-запроса
$data =
"name=".urlencode("Игорь")."&pass=".urlencode("пароль")."\r\n\r\n";
// Заголовок HTTP-запроса
$headers = "POST $path HTTP/1.1\r\n";
$headers .= "Host: $hostname\r\n";
$headers .= "Content-type: application/x-www-form-urlencoded\r\n";
$headers .= "Content-Length: ".strlen($data)."\r\n\r\n";
// Отправляем HTTP-запрос серверу
fwrite($fp, $headers.$data);
// Получаем ответ
while (!feof($fp))
{
$line .= fgets($fp, 1024);
}
fclose($fp);
}
echo "<pre>";
echo $line;
echo "</pre>";
}
|
результат работы скрипта:
HTTP/1.1 404 Not Found
Date: Mon, 07 Nov 2011 12:40:34 GMT
Server: Apache/2.2.4 (Win32) mod_ssl/2.2.4 OpenSSL/0.9.8d PHP/5.2.4
X-Powered-By: PHP/5.2.4
Content-Length: 1986
Content-Type: text/html; charset=windows-1251
|
host и path вроде верно указаны, нет? | |
|
|
|
|
|
|
|
для: *m*
(07.11.2011 в 16:23)
| | народ все дело в путях, нужно правильно указать, хост и путь, подскажите кто сталкивался с этим.. | |
|
|
|