Куки в php

Discussion in 'PHP' started by xor[jmp], 10 Apr 2010.

  1. xor[jmp]

    xor[jmp] Banned

    Joined:
    29 Mar 2010
    Messages:
    89
    Likes Received:
    14
    Reputations:
    3
    Подскажите пожалуйста как принять куки от сайта средствами .php и записать их в переменную?
     
  2. xor[jmp]

    xor[jmp] Banned

    Joined:
    29 Mar 2010
    Messages:
    89
    Likes Received:
    14
    Reputations:
    3
    Вот такая ошибка:

    В таком коде:

    :(
     
  3. Fepsis

    Fepsis Elder - Старейшина

    Joined:
    17 Sep 2008
    Messages:
    791
    Likes Received:
    391
    Reputations:
    72
    m0Hze, насколько я понял он хочет зайти на сайт вконтакте и сохранить полученные там куки в переменную...

    PHP:
    <?php
    $response
    ="";
    if (
    $fp = fsockopen ("vkontakte.ru", 80, $errno, $errstr, 30))
    {
    $request ="POST /profile.php HTTP/1.0\r\n";
    $request.="Host: vkontakte.ru\r\n";
    $request.="Content-Type: application/x-www-form-urlencoded\r\n";
    $request.="Content-Length: 7\r\n";
    $request.="\r\n\r\n";
    $request.="foo=bar";

    fwrite($fp,$request,strlen($request));

    while (!
    feof($fp))
    $response.=fread($fp,128);

    if(
    strpos($response,"302"))
    { 
    fclose($fp);
    echo 
    "<pre>\n";
    echo 
    htmlentities($response);
    echo 
    "</pre>\n";
    } 
    else

    echo 
    "<pre>\n";
    echo 
    htmlentities($response);
    echo 
    "</pre>\n";

    preg_match_all("/(?<=Set-Cookie: )(.*?)(?=\;)/", $response , $cook);
    echo 
    '<br><br><br>Куки:<br>';
    print_r($cook[0]);

    }
    ?>
     
    #3 Fepsis, 10 Apr 2010
    Last edited: 10 Apr 2010
  4. xor[jmp]

    xor[jmp] Banned

    Joined:
    29 Mar 2010
    Messages:
    89
    Likes Received:
    14
    Reputations:
    3
    Ога, спс.А также интересно как их подставить контакту чтоб потом авторизироваться и получить profile.php ^_^
     
  5. Fepsis

    Fepsis Elder - Старейшина

    Joined:
    17 Sep 2008
    Messages:
    791
    Likes Received:
    391
    Reputations:
    72
    Давно как-то писал функцию для запросов, которая автоматов выдирает куки и автоматом же подставляет их в последующих запросах... Вот:

    PHP:
    <?php
    set_time_limit
    (0);

    $mail = 'мыло@mail.ru';
    $pass = 'пасс';


    function 
    request($url = '', $post = '', $ref = '')
         {

        
    $u = parse_url($url);
        
    $path = $u[path].'?'.$u[query];

        global 
    $COOKIE;

        if (
    $COOKIE)
             {
            foreach (
    $COOKIE as $n => $v)
            
    $COOK .= $n.'='.$v.';';
             }

        
    $ip = gethostbyname($u[host]);
        
    $fp = fsockopen($ip,80,$en,$es,15);

        if(!
    $fp){exit('Connection failed. Error #'.$en.': '.$es);}  
        
        if (!empty(
    $post)) {$req = "POST $path HTTP/1.1\r\n";} else {$req = "GET $path HTTP/1.0\r\n";}
        
    $req .= "Host: $u[host]\r\n";
        
    $req .= "User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.1.4) Gecko/20091016 Firefox/3.5.4\r\n";
        if (!empty(
    $ref)) {$req .= "Referer: $ref\r\n";}
        
    $req .= "Content-type: application/x-www-form-urlencoded\r\n";
        if (!empty(
    $post)) {$req .= "Content-length: ". strlen($post) ."\r\n";}
        
    $req .= "Cookie:".substr($COOK, 0, strlen($COOK)-1)."\r\n";
        
    $req .= "Connection: close\r\n\r\n";
        if (!empty(
    $post)) {$req .= $post;}
        
    fwrite($fp,$req);
     

        while(!
    feof($fp))
             {
              
    $s .= fgets($fp,256);
             }


        
    fclose($fp);
        
    preg_match_all("/(?<=Set-Cookie: )(.*?)(?=\;)/", $s , $cook);

        foreach (
    $cook[0] as $str)
            {
              list (
    $name, $val) = explode('=', $str);
              
    $COOKIE[$name]=$val;
        
            }

        return 
    $s;

    }



    $ex = request('http://vkontakte.ru/login.php?email='.$mail.'&pass='.$pass);
    $ex = request('http://vkontakte.ru/profile.php');

    echo 
    $ex;

    ?>
    За корректность работы функции не ручаюсь, но за основу можешь её взять...
     
  6. xor[jmp]

    xor[jmp] Banned

    Joined:
    29 Mar 2010
    Messages:
    89
    Likes Received:
    14
    Reputations:
    3
    Да, спс оно. +