Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   PHP, PERL, MySQL, JavaScript (https://forum.antichat.xyz/forumdisplay.php?f=37)
-   -   Посылка Cookie через Header (PHP) (https://forum.antichat.xyz/showthread.php?t=27894)

cop 24.11.2006 23:25

Посылка Cookie через Header (PHP)
 
Написал некий скрипт, который подключаеться к сайту через fsockopen, отправляет заголовки в том числе cookies, что бы войти в систему (типо через форму).
С локальной машины все прекрасно работает.
Загружаю скрипт на сервер и почему-то вход пользователя не происходит. [На этом сервере у меня тоже лежит скрипт, который выполняет похожу функцию к другому сайту, там все работает.] Что может быть? Сайт тот как-то определяет, что вход выполнен не через их? Но почему тогда срабатывает с моей машины. Может кто знает что это может быть? :)

Baron Night 24.11.2006 23:56

тебе хост не режет права? на некот бесплатных хостингах работают не все скрипты

r0 24.11.2006 23:59

наверно как всегда register_globals...

cop 25.11.2006 00:09

Baron Night, это платный хост. К тому же на этом хосте скрипт с отправкой куков нормально работает.

r0cha!, т.е.?

_Great_ 25.11.2006 00:17

Скрипт точь-точь такой на локалхосте пашет?
Без любых изменений.

nc.STRIEM 25.11.2006 00:17

поддержка сокетов есть??
скрипт в студию...

cop 25.11.2006 00:25

_Great_, да

nc.STRIEM, сокеты поддерживаються, ниже скрипт (ф-ю стащил пыхпыха.нет)

PHP код:

function sendToHost($host,$method,$path,$data,$cookie='',$useragent=0){
    
$buf '';
    if (!
$fp fsockopen($host80$errno$errstr30) )
        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($fp128);
    }
    
fclose($fp);
    return 
$buf;



nc.STRIEM 25.11.2006 00:30

замени:
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";

_Great_ 25.11.2006 00:46

Цитата:

на
PHP код:
if ($method == 'POST') {
$out .= $data."/r/n/r/n";
да ну? ты протокол HTTP читал? что-то я не помню, чтобы после POST-запроса шли переводы строки

nc.STRIEM 25.11.2006 00:54

Цитата:

Сообщение от _Great_
да ну? ты протокол HTTP читал? что-то я не помню, чтобы после POST-запроса шли переводы строки

Читал! не помню где но точн гдет читал что надо! ща еще посмотрю! возможно ошибаюсь..


Время: 20:01