Просмотр полной версии : Посылка Cookie через Header (PHP)
Написал некий скрипт, который подключаеться к сайту через fsockopen, отправляет заголовки в том числе cookies, что бы войти в систему (типо через форму).
С локальной машины все прекрасно работает.
Загружаю скрипт на сервер и почему-то вход пользователя не происходит. [На этом сервере у меня тоже лежит скрипт, который выполняет похожу функцию к другому сайту, там все работает.] Что может быть? Сайт тот как-то определяет, что вход выполнен не через их? Но почему тогда срабатывает с моей машины. Может кто знает что это может быть? :)
Baron Night
24.11.2006, 23:56
тебе хост не режет права? на некот бесплатных хостингах работают не все скрипты
наверно как всегда register_globals...
Baron Night, это платный хост. К тому же на этом хосте скрипт с отправкой куков нормально работает.
r0cha!, т.е.?
Скрипт точь-точь такой на локалхосте пашет?
Без любых изменений.
nc.STRIEM
25.11.2006, 00:17
поддержка сокетов есть??
скрипт в студию...
_Great_, да
nc.STRIEM, сокеты поддерживаються, ниже скрипт (ф-ю стащил пыхпыха.нет)
function sendToHost($host,$method,$path,$data,$cookie='',$u seragent=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;
}
nc.STRIEM
25.11.2006, 00:30
замени:
if ($method == 'POST') {
$out .= $data;
на
if ($method == 'POST') {
$out .= $data."/r/n/r/n";
и замени:
$out .= "Connection: Close\r\n\r\n";
на
$out .= "Pragma: no-cache\r\n\r\n";
на
PHP код:
if ($method == 'POST') {
$out .= $data."/r/n/r/n";
да ну? ты протокол HTTP читал? что-то я не помню, чтобы после POST-запроса шли переводы строки
nc.STRIEM
25.11.2006, 00:54
да ну? ты протокол HTTP читал? что-то я не помню, чтобы после POST-запроса шли переводы строки
Читал! не помню где но точн гдет читал что надо! ща еще посмотрю! возможно ошибаюсь..
там кстати слеши не в ту сторону :)
в любом случаи не помогло.
nc.STRIEM, всеравно спасибо!
один перевод строки после поста нужен. иначе как сервер поймет что ты данные уже послал и завершил запрос? =))) Это во-первых. Во-вторых, убирать Connection: close не нужно. В-третьих, если на локале скрипт работает, а на хосте нет - очевидно что дело в хосте =)
Дело в том, что точно такой же скрипт на этом же хосте работает.
vBulletin® v3.8.14, Copyright ©2000-2026, vBulletin Solutions, Inc. Перевод: zCarot