Curl и AJAX

Статус
В этой теме нельзя размещать новые ответы.

lolshik

Постоялец
Регистрация
21 Фев 2008
Сообщения
316
Реакции
127
Добрый день. Помогите разобраться.
Есть скрипт act.php
Есть обёртка для CURL (hxxp://www.samborsky.com/php/1010/)
act.php выглядит так:
PHP:
// Подключаем файл с классом
include('class/s_http.php');
// Создали класс
$http = new s_http();
// Инициализируем
$http->init();
if (isset($_GET['login'])) {
	$http->get('http://site.ru/')
	sleep(2);
$http->post('http://site.ru/authorisation.php','login=name@gmail.ru&password=12345');
	sleep(2);
}
if (isset($_GET['get_mail'])) {
	$http->get('http://site.ru/mail.php')
	sleep(2);
}
К скрипту я обращаюсь через AJAX. Т.е. сначало c act.php?login=true
затем act.php?mail=true
Проблема в том, что при втором обращении к срипту (act.php?get_mail=true) сайт забывает что я уже авторизирован.
Я так понимаю из за того, что при каждом обращении к act.php затирается придыдущие куки, так как мы инициализируем класс заново.
Как этого можно избежать? При условии что не хочется два раза подряд логиниться.
 
Добрый день. Помогите разобраться.
Есть скрипт act.php
Есть обёртка для CURL (hxxp://www.samborsky.com/php/1010/)
act.php выглядит так:
PHP:
// Подключаем файл с классом
include('class/s_http.php');
// Создали класс
$http = new s_http();
// Инициализируем
$http->init();
if (isset($_GET['login'])) {
	$http->get('http://site.ru/')
	sleep(2);
$http->post('http://site.ru/authorisation.php','login=name@gmail.ru&password=12345');
	sleep(2);
}
if (isset($_GET['get_mail'])) {
	$http->get('http://site.ru/mail.php')
	sleep(2);
}
К скрипту я обращаюсь через AJAX. Т.е. сначало c act.php?login=true
затем act.php?mail=true
Проблема в том, что при втором обращении к срипту (act.php?get_mail=true) сайт забывает что я уже авторизирован.
Я так понимаю из за того, что при каждом обращении к act.php затирается придыдущие куки, так как мы инициализируем класс заново.
Как этого можно избежать? При условии что не хочется два раза подряд логиниться.
Попробуй добавить в класс
PHP:
		var $cookiesSafe = false;
В функции function init()
PHP:
 	$this->set_opt(CURLOPT_COOKIESESSION,true);
#заменить на 
 	if(!$this->cookiesSafe) $this->set_opt(CURLOPT_COOKIESESSION,true);
И если требуется сохранить преведущий кук - дописать уже в скрипте
PHP:
 $http->cookiesSafe = trye;
    $http->get('http://site.ru/mail.php') 
    sleep(2);
 
В общем разобрались мы в аське, вопрос был (на будущее) в том чтобы доделать исходный класс - поставить опцию CURLOPT_COOKIEJAR

Вот так теперь выглядит участок класса:э

PHP:
// Кукисы
			$this->set_opt(CURLOPT_COOKIESESSION,true);
			$this->set_opt(CURLOPT_COOKIEFILE,'cookiefile');
            $this->set_opt(CURLOPT_COOKIEJAR, 'cookiefile');
			
			// Если Referer не задан, включаем автореферер. Как в браузерах
			if( !empty($this->referer) ){
				$this->set_opt(CURLOPT_REFERER,$this->referer);
 
Спасибо что помогли разобраться. Возник ещё один вопрос.
Посылаю post запрос к vkontakte.ru Запрос ниже. Ответ приходит вида:


PHP:
{"summary":"В группе 1193 темы. ","pages":"<ul class=\"pageList\"><li class=\"current\">1<\/li><li><a href=\"board.php?act=topics&id=974747&offset=50\" onclick=\"return getPage(50)\">2<\/a><\/li><li><a href=\"board.php?act=topics&id=974747&offset=100\" onclick=\"return getPage(100)\">3<\/a><\/li><li><a href=\"board.php?act=topics&id=974747&offset=1150\" onclick=\"return getPage(1150)\">&raquo;<\/a><\/li><\/ul>","html":"<div class=\"boardTopic clearFix\" style='border-top-width:1px;'>\n<table width=\"565\"><tr><td width=\"370px\">\n  <h3 class=\"topicTitle\"><a href=\"topic-974747_4556783\">Вам как больше нравится:Дима Билан или Витя Белан?<\/a><\/h3>\n  <div class=\"moreInfo clearFix\">\n   <div class=\"fl_l\"><span style=\"color: #333\">172 сообщения.<\/span> \n

Весь ответ приходит в одну строку с экраннированными слэшами и добавленными \n и прочими ненужностями. Возможно ли получить инфу в нормальном html?



PHP:
http://vkontakte.ru/board.php?act=a_get_topics_page&gid=5277

POST /board.php?act=a_get_topics_page&gid=5277 HTTP/1.1
Host: vkontakte.ru
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.1.8) Gecko/20100202 Firefox/3.5.8 (.NET CLR 3.5.21022)
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Connection: keep-alive
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
X-Requested-With: XMLHttpRequest
Referer: http://vkontakte.ru/board5277
Content-Length: 17
Cookie: remixchk=5; remixautobookmark=2; remixclosed_tabs=0; remixclosed_tabs=0; remixnews_privacy_filter=0; remixgroup_closed_tabs=368; remixsid=7105ca276d925a96eeba; audio_vol=1
Pragma: no-cache
Cache-Control: no-cache
offset=50&order=0
HTTP/1.1 200 OK
Server: nginx/0.7.59
Date: Sun, 14 Mar 2010 18:25:52 GMT
Content-Type: text/html; charset=windows-1251
Connection: keep-alive
X-Powered-By: PHP/5.2.0-8+etch13
Pragma: no-cache
Cache-Control: no-store
Content-Encoding: gzip
Vary: Accept-Encoding
Content-Length: 744
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху