Тема: Куки в php
Показать сообщение отдельно

  #8  
Старый 10.04.2010, 03:11
Аватар для Fepsis
Fepsis
Постоянный
Регистрация: 17.09.2008
Сообщений: 562
Провел на форуме:
6962560

Репутация: 536


По умолчанию

Цитата:
Сообщение от xor[jmp]  
Ога, спс.А также интересно как их подставить контакту чтоб потом авторизироваться и получить profile.php ^_^
Давно как-то писал функцию для запросов, которая автоматов выдирает куки и автоматом же подставляет их в последующих запросах... Вот:

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($COOK0strlen($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;

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