Написал некий скрипт, который подключаеться к сайту через fsockopen, отправляет заголовки в том числе cookies, что бы войти в систему (типо через форму). С локальной машины все прекрасно работает. Загружаю скрипт на сервер и почему-то вход пользователя не происходит. [На этом сервере у меня тоже лежит скрипт, который выполняет похожу функцию к другому сайту, там все работает.] Что может быть? Сайт тот как-то определяет, что вход выполнен не через их? Но почему тогда срабатывает с моей машины. Может кто знает что это может быть?
Baron Night, это платный хост. К тому же на этом хосте скрипт с отправкой куков нормально работает. r0cha!, т.е.?
_Great_, да nc.STRIEM, сокеты поддерживаються, ниже скрипт (ф-ю стащил пыхпыха.нет) PHP: function sendToHost($host,$method,$path,$data,$cookie='',$useragent=0){ $buf = ''; if (!$fp = fsockopen($host, 80, $errno, $errstr, 30) ) return false; if (empty($method)) { $method = 'GET'; } $method = strtoupper($method); if ($method == 'GET') { $path .= '?' . $data; } $out = "$method $path HTTP/1.1\r\n"; $out .= "Host: $host\r\n"; $out .= "Referer: http://$host\r\n"; $out .= "Content-type: application/x-www-form-urlencoded\r\n"; if ($cookie){ $out .= "Cookie: $cookie" . "\r\n"; } if ($useragent) { $out .= "User-Agent: MSIE\r\n"; } $out .= "Content-length: " . strlen($data) . "\r\n"; $out .= "Connection: Close\r\n\r\n"; if ($method == 'POST') { $out .= $data; } if (! fwrite($fp, $out) ) return false; while (!feof($fp)) { $buf .= fgets($fp, 128); } fclose($fp); return $buf; }
замени: PHP: if ($method == 'POST') { $out .= $data; на PHP: if ($method == 'POST') { $out .= $data."/r/n/r/n"; и замени: $out .= "Connection: Close\r\n\r\n"; на $out .= "Pragma: no-cache\r\n\r\n";
один перевод строки после поста нужен. иначе как сервер поймет что ты данные уже послал и завершил запрос? =))) Это во-первых. Во-вторых, убирать Connection: close не нужно. В-третьих, если на локале скрипт работает, а на хосте нет - очевидно что дело в хосте =)