PDA

Просмотр полной версии : Куки в php


xor[jmp]
10.04.2010, 02:18
Подскажите пожалуйста как принять куки от сайта средствами .php и записать их в переменную?

m0Hze
10.04.2010, 02:21
']Подскажите пожалуйста как принять куки от сайта средствами .php и записать их в переменную?
Все куки твоего сайта лежат в $_COOKIE;

setcookie("name","values");
print_r($_COOKIE);

xor[jmp]
10.04.2010, 02:28
Вот такая ошибка:

Warning: Cannot modify header information - headers already sent by (output started at C:\AppServ\www\login.php:1) in C:\AppServ\www\login.php on line 2

В таком коде:

<?php

setcookie("test","Hello");
$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";

}
?>
:(

m0Hze
10.04.2010, 02:45
']Вот такая ошибка:


...
:(
Сохрани без BOM. Например, это можно сделать в Notepad++.

Fepsis
10.04.2010, 02:51
m0Hze, насколько я понял он хочет зайти на сайт вконтакте и сохранить полученные там куки в переменную...

<?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]);

}
?>

m0Hze
10.04.2010, 02:55
m0Hze, насколько я понял он хочет зайти на сайт вконтакте и сохранить полученные там куки в переменную...
Ну тогда нужно точнее выражать свои мысли, я не телепат. И вообще я хочу спать :(

xor[jmp]
10.04.2010, 03:02
m0Hze, насколько я понял он хочет зайти на сайт вконтакте и сохранить полученные там куки в переменную...

<?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]);

}
?>

Ога, спс.А также интересно как их подставить контакту чтоб потом авторизироваться и получить profile.php ^_^

Fepsis
10.04.2010, 03:11
']Ога, спс.А также интересно как их подставить контакту чтоб потом авторизироваться и получить profile.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;

?>

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

xor[jmp]
10.04.2010, 03:31
Да, спс оно. +