Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   PHP, PERL, MySQL, JavaScript (https://forum.antichat.xyz/forumdisplay.php?f=37)
-   -   Получить куки [php] (https://forum.antichat.xyz/showthread.php?t=95799)

bad_signal 10.12.2008 22:24

Получить куки [php]
 
Здравствуйте.
Встала задача зайти на сайт 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.

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

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

$ch curl_init();
curl_setopt($chCURLOPT_URL,$url); 
curl_setopt($chCURLOPT_RETURNTRANSFER1);
curl_setopt($chCURLOPT_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($chCURLOPT_URL,$url); 
curl_setopt($chCURLOPT_RETURNTRANSFER1);
curl_setopt($chCURLOPT_COOKIE,$cookie);
$temp=curl_exec($ch);
curl_close($ch);
//засылаем CURLом плюшки обратно 

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

PHP код:

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

$ch curl_init();
curl_setopt($chCURLOPT_URL,$url); 
curl_setopt($chCURLOPT_RETURNTRANSFER1);
curl_setopt($chCURLOPT_POSTFIELDS$post_data);
curl_setopt($chCURLOPT_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 и будет содержать код полученной страницы.


Время: 17:06