PHP Cookies & Sessions

Discussion in 'PHP' started by MiZtEriX, 12 Jul 2005.

  1. MiZtEriX

    MiZtEriX New Member

    Joined:
    27 Jun 2005
    Messages:
    11
    Likes Received:
    0
    Reputations:
    0
    Помогите, пожалуйста, решить задачу:
    есть такой форум phpbb, у него есть возможность закрывать разделы для разных уровней пользователей. Как на php вытащить и сохранить закрытую страницу, без использования браузера, если есть юзер/пасс имеющего туда доступ?
     
  2. nerezus

    nerezus Banned

    Joined:
    12 Aug 2004
    Messages:
    3,191
    Likes Received:
    729
    Reputations:
    266
    Почему невозможно использование броузера?
     
  3. MiZtEriX

    MiZtEriX New Member

    Joined:
    27 Jun 2005
    Messages:
    11
    Likes Received:
    0
    Reputations:
    0
    А как его использовать, чтоб он сам запустился, авторизовался, скачал, сохранил и закрылся?
     
  4. nerezus

    nerezus Banned

    Joined:
    12 Aug 2004
    Messages:
    3,191
    Likes Received:
    729
    Reputations:
    266
    ну тогда кури perldoc LWP::UserAgent
     
  5. MiZtEriX

    MiZtEriX New Member

    Joined:
    27 Jun 2005
    Messages:
    11
    Likes Received:
    0
    Reputations:
    0
    насчёт самозапуска, эт я неправ...
    а вот кросплатфоменность нужна (вин и фря)
     
  6. MiZtEriX

    MiZtEriX New Member

    Joined:
    27 Jun 2005
    Messages:
    11
    Likes Received:
    0
    Reputations:
    0
    эээ... перл? а на пхп нельзя?
    перл вообще не знаю :(
     
  7. nerezus

    nerezus Banned

    Joined:
    12 Aug 2004
    Messages:
    3,191
    Likes Received:
    729
    Reputations:
    266
    на пхп fsockopen() и его команда =)
     
  8. KEZ

    KEZ Ненасытный школьник

    Joined:
    18 May 2005
    Messages:
    1,604
    Likes Received:
    754
    Reputations:
    397
    ты fsockopen() знаешь?
    ну так вот, попроси сервера прислать тебе страничку, неважно динамическая она или HTML. Отправь заголовки (смотрит на меня большими глазами и молчит...)
    Ну блин...

    $sock = fsockopen( $server, $port );
    $request = "GET http://".$server.$url." HTTP/1.1\n";
    $request .= "Host: ".$server."\n";
    $request .= "User-Agent: вставь сюда агент\n";
    $request .= "Connection: Keep-Alive\n";
    fwrite( $sock, $request );
    while ((!feof( $sock )) && ($l = fgets( $sock )))
    {
    // answer
    print $l;
    }
     
    #8 KEZ, 12 Jul 2005
    Last edited: 12 Jul 2005
  9. MiZtEriX

    MiZtEriX New Member

    Joined:
    27 Jun 2005
    Messages:
    11
    Likes Received:
    0
    Reputations:
    0
    получил страничку с формой и куки
    а как отпостить переменные формы и куки?
     
  10. nerezus

    nerezus Banned

    Joined:
    12 Aug 2004
    Messages:
    3,191
    Likes Received:
    729
    Reputations:
    266
  11. KEZ

    KEZ Ненасытный школьник

    Joined:
    18 May 2005
    Messages:
    1,604
    Likes Received:
    754
    Reputations:
    397

    ...
    $content = "value1=1&value2=2&value3=3&blablabla=blabla\n";
    $request = "POST http://".$server.$url." HTTP/1.1\n";
    $request .= "Host: ".$server."\n";
    $request .= "User-Agent: вставь сюда агент\n";
    $request .= "Connection: Keep-Alive\n";
    $request .= "Content-Type: text/html\n";
    $request .= "Content-Length: ".strlen($content)."\n";
    $request .= "\n".$content."\n";

    fwrite( $sock, $request );
    ...
     
  12. KEZ

    KEZ Ненасытный школьник

    Joined:
    18 May 2005
    Messages:
    1,604
    Likes Received:
    754
    Reputations:
    397
    точнее лутше Connection: Close
     
  13. MiZtEriX

    MiZtEriX New Member

    Joined:
    27 Jun 2005
    Messages:
    11
    Likes Received:
    0
    Reputations:
    0
    The POST method is used to request that the origin server accept the
    entity enclosed in the request as a new subordinate of the resource
    identified by the Request-URI in the Request-Line. POST is designed
    to allow a uniform method to cover the following functions:
    .....
    а на практике это как всё?
    вам не очень трудно написать?
     
  14. KEZ

    KEZ Ненасытный школьник

    Joined:
    18 May 2005
    Messages:
    1,604
    Likes Received:
    754
    Reputations:
    397
    ну а я тебе че написал? вверху почитай - на PHP написано.
    а если хочешь попрактиковаться - сделай так. скачай InetCrack+Naviscope (http://antichat.ru/inetcrack/)
    и включи naviscope. теперь через IE залезь куданить и naviscope тебе покажет
    какие твой браузер отправлял заголовки. а вручную их удобно отправлять InetCrack'ом

    а вообще может быть тебе интересно зачем нужен GET и POST ?
    так вот. когда ты пишешь в адресной строке
    http://porno.com/script.php?parameter=1
    тоданные из parameter передаются методом GET. тоесть в прямо в адресной строке
    например script.php?a=1&b=1&c=2&d=32
    Тоесть они передаются в ЗАГОЛОВКЕ HTTP запроса :
    GET http//.../script.php?parameter=1 HTTP / 1.1
    ...

    А POST метод передает данные в ТЕЛЕ запроса, их невидно в адресной строке:
    GET http://script.php HTTP / 1.1
    ...
    Content-Type: тип mime
    Content-Length: размер тела

    parameter=1&a=1&b=2...


    Ясно стало?
    Часто POST юзают там где юзер чтото отправляет на сервер.
    Хотя в любом случае ответом сервера будет результат работы скрипты\чегото ещё...
     
  15. MiZtEriX

    MiZtEriX New Member

    Joined:
    27 Jun 2005
    Messages:
    11
    Likes Received:
    0
    Reputations:
    0
    что я неправильно делаю?

    <?
    $file=fopen("test1.htm","w");

    $url = "/index.php?pid=4";
    $server = "csport";
    $useragent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; MyIE2)";

    $fp = fsockopen("csport", 80, $errno, $errstr, 30);
    if (!$fp) {
    echo "Error! $errstr ($errno)<br />\n";
    } else {
    $out = "GET http://".$server.$url." HTTP/1.1\r\n";
    $out .= "Host: ".$server."\r\n";
    $out .= "User-Agent: ".$useragent."\r\n";;
    $out .= "Connection: Close\r\n\r\n";
    fwrite($fp, $out);
    while (!$flag) {
    $line = fread($fp,32000);
    if (strstr($line, "Set-Cookie: _data")){$cukdata = substr($line, 12, sizeof($line));}
    if (strstr($line, "Set-Cookie: _sid")){$cuksid = substr($line, 12, sizeof($line));}
    $form=strstr($line,"<form");
    if ($form){$flag=1;}
    fputs ($file,$line);
    }
    }
    fclose($file);
    $file=fopen("test2.htm","w");
    if ($form<>'') {
    if (!$fp) {
    echo "Error! $errstr ($errno)<br />\n";
    } else {
    echo "form finded - login\r\n\r\n";
    $content = "username=test&password=test&autologin=checked&redirect=portalhome&submit=Login";
    $out = "POST http://".$server."/f/login.php?login=true&amp;sid=".$cuksid." HTTP/1.1\r\n";
    $out .= "Host: ".$server."\r\n";
    $out .= "User-Agent: ".$useragent."\r\n";;
    $out .= "Cookie: ".$cukdata."\r\n";
    $out .= "Cookie: ".$cuksid."\r\n";
    $out .= "Content-Type: text/html\n";
    $out .= "Content-Length: ".strlen($content)."\n";
    $out .= "\n".$content."\n";
    $out .= "Connection: Close\r\n\r\n";
    fputs($fp, $out);
    while (!feof($fp)) {
    $line = fread($fp,32000);
    if (strstr($line, "Set-Cookie: _data")){$cukdata = substr($line, 12, sizeof($line));}
    if (strstr($line, "Set-Cookie: _sid")){$cuksid = substr($line, 12, sizeof($line));}
    fputs ($file,$line);
    }
    }
    }
    fclose($file);
    $file=fopen("test3.htm","w");
    if ($form<>'') {
    if (!$fp) {
    echo "Error! $errstr ($errno)<br />\n";
    } else {
    echo "get page\r\n\r\n";
    $out = "GET http://".$server.$url." HTTP/1.1\r\n";
    $out .= "Host: ".$server."\r\n";
    $out .= "User-Agent: ".$useragent."\r\n";;
    $out .= "Cookie: ".$cukdata."\r\n";
    $out .= "Cookie: ".$cuksid."\r\n";
    $out .= "Connection: Close\r\n\r\n";
    fputs($fp, $out);
    while (!feof($fp)) {
    $line = fgets($fp);
    fputs ($file,$line);
    }
    }
    }
    fclose($file);
    fclose($fp);
     
    #15 MiZtEriX, 12 Jul 2005
    Last edited: 14 Jul 2005
  16. MiZtEriX

    MiZtEriX New Member

    Joined:
    27 Jun 2005
    Messages:
    11
    Likes Received:
    0
    Reputations:
    0
    первый файл (test1) до строки с <form
    второй (test2) - его продолжение
    третий вообще пустой
    а должно быть: в первом форма на логон, во втором - авторизация успешна, в третьем закрытая страница
    что здесь неверно? как исправить? подскажите, пожалуйста, а то уже неделю над этим бьюсь :(
     
  17. KEZ

    KEZ Ненасытный школьник

    Joined:
    18 May 2005
    Messages:
    1,604
    Likes Received:
    754
    Reputations:
    397
    тем кто так пишет скрипты надо давать по шее.
     
  18. MiZtEriX

    MiZtEriX New Member

    Joined:
    27 Jun 2005
    Messages:
    11
    Likes Received:
    0
    Reputations:
    0
    я ж и спрашиваю, как надо?
     
  19. nerezus

    nerezus Banned

    Joined:
    12 Aug 2004
    Messages:
    3,191
    Likes Received:
    729
    Reputations:
    266
    Надо правильно.
    Мануал по пхп и Rfc 2616 в зубы и вперед на мины ;)
     
  20. MiZtEriX

    MiZtEriX New Member

    Joined:
    27 Jun 2005
    Messages:
    11
    Likes Received:
    0
    Reputations:
    0
    ну ваще... я с мануалов начал, если б там ВСЁ было написано, я б уже сделал давно...

    <?
    $fp = fsockopen("csport", 80, $errno, $errstr, 30);
    $file=fopen("test.htm","w");
    if (!$fp) {
    echo "Error! $errstr ($errno)<br />\n";
    } else {
    $out = "GET http://csport/index.php?pid=4 HTTP/1.1\r\n";
    $out .= "Accept: */*
    Referer: http://csport/
    Accept-Language: ru
    User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; MyIE2)
    Host: csport
    Connection: Keep-Alive
    Cache-Control: no-cache
    Cookie: data=a%3A2...........%7D


    ";
    fputs($fp, $out);
    while (!feof($fp)) {
    $line = fgets($fp);
    fputs ($file,$line);
    }
    echo "ok";
    }
    fclose($file);
    fclose($fp);
    ?>

    вот это у меня работает, когда я кук сюда копирую из браузерного
    а как мне залогиница и получить свежий кук? ну не получается у меня пройти по нескольким страницам! неужто так трудно помочь?