Bermuda
Новичок
Что послать, чтобы сервер знал, что поддерживаются Cookie?
Пользователь авторизован на сайте. Стоит задача авторизации этого пользователя на форуме phpBB2 прикрученном к сайту. Не хотелось бы ковырять код phpBB, но было бы удобнее использовать родной механизм авторизации на phpBB. Т. е. из скрипта делать POST запрос, получать от форума сессионные куки и отдавать их обратно в браузер. Таким образом форум начинает сессию, а браузер имеет куки связанные с этой сессией. Теоретически этого достаточно для авторизации.
Алгорит следующий.
1. Запрашиваю любую страницу форума.
2. Форум начинает PHP сессию и возвращает мне страницу каждая ссылка которой содержит идентификатор сессии.
3. С помощью regexp ищу этот идентефикатор.
4. Делаю пост запрос и в URL как параметр передаю идентификатор сессии.
5. Форум должен залогинить и вернуть в своем ответе куки с идентификатором сессии.
Все хорошо, форум пускает, но возвращает идентификатор сессии снова в ссылках, а не в куках. Т. е. он думает, что мой "браузер" не принимает куки.
Вопрос: что нужно послать серверу, чтобы тот знал, что браузер принимает куки?
Привожу пробный код
P. S. Используется PEAR:HTTP_Client
Пользователь авторизован на сайте. Стоит задача авторизации этого пользователя на форуме phpBB2 прикрученном к сайту. Не хотелось бы ковырять код phpBB, но было бы удобнее использовать родной механизм авторизации на phpBB. Т. е. из скрипта делать POST запрос, получать от форума сессионные куки и отдавать их обратно в браузер. Таким образом форум начинает сессию, а браузер имеет куки связанные с этой сессией. Теоретически этого достаточно для авторизации.
Алгорит следующий.
1. Запрашиваю любую страницу форума.
2. Форум начинает PHP сессию и возвращает мне страницу каждая ссылка которой содержит идентификатор сессии.
3. С помощью regexp ищу этот идентефикатор.
4. Делаю пост запрос и в URL как параметр передаю идентификатор сессии.
5. Форум должен залогинить и вернуть в своем ответе куки с идентификатором сессии.
Все хорошо, форум пускает, но возвращает идентификатор сессии снова в ссылках, а не в куках. Т. е. он думает, что мой "браузер" не принимает куки.
Вопрос: что нужно послать серверу, чтобы тот знал, что браузер принимает куки?
Привожу пробный код
PHP:
<?php
require_once('HTTP/Client.php');
$request =& new HTTP_Client();
$url = "/externos/phpbb2/login.php";
$data = array(
"Accept" => "*/*",
"Accept-Encoding" => "gzip, deflate",
"Accept-Language" => "es",
"Connection" => "Keep-Alive",
"Host" => "igor.ottd.net2u.cvs",
"User-Agent" => "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Maxthon)");
$request->setDefaultHeader($data);
$request->get($url);
$response = $request->currentResponse();
preg_match( '/sid=(.{32,32})"/', $response['body'], $res);
$sid = $res[1];
$url .= "?sid=".$res[1];
$post_data = array(
"username" => "igor",
"password" => "igor",
"redirect" => "",
"login" => "Login",
);
$request->post($url, $post_data);
$response = $request->currentResponse();
print_r($response);
?>