PDA

Просмотр полной версии : curl и сессия


Chas
24.04.2007, 23:26
с помощью curl хочу загрузить xml-страницу, сформированную моим же пхп-сервлетом.
загружаю таким образом:

$ch= curl_init();
curl_setopt($ch, CURLOPT_URL, "http://localhost/connector/connect.php");
// curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_HEADER, 0);

curl_setopt($ch, CURLOPT_VERBOSE, 1);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $_POST['request']);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);

$textcurl = curl_exec($ch);
curl_close($ch);


только вот проблема. в connect.php есть проверка авторизации пользователя следующим образом: $_SESSION[logged]=1
и она проваливается, а дамп $_SESSION в connect.php показывает пустой массив. т.е. курл для загрузки данных создает видимо свою сессию.

можно ли заставить курл использовать текущую сессию?

Skubent
25.04.2007, 12:56
Убрать из своего скрипта проверку для IP адреса или передавать какое-нибудь кодовое слово в запросе.

И сдается мне, что Вы вообще не понимаете, что у вас там происходит. Во всяком случае "своя сессия для курла" - это выше моего понимания.

Chas
25.04.2007, 18:35
имеется ввиду, что курл не использует сессию и куки броузера в своем соединении.
как оказалось нужно было добавить
curl_setopt($ch, CURLOPT_COOKIE, $_SERVER[HTTP_COOKIE]);
так передается в курл все куки, в том числе иномер сессии.
только перед этим обязательно, если оба скрипта на одном хосте, нужно выключить сессию вызывающего скрипта, иначе вызываемый скрипт подвиснет, пытаясь открыть уже открытую сессию.

Skubent
25.04.2007, 19:10
Да, действительно, какой недогадливый курл. Не отдает куки сам. Ну надо же.

Причем хочу добавить, что если разнести скрипт с курлом и скрипт, генерирующий данные на разные сервера - работать не будет.
Все почему ? Потому что HTTP протокол для автора скрипта остался некоей магической приблудой, которая работает через заклинание "curl". И автор снова придет с вопросом "куда деваются мои куки ?". Хех. НЕт бы теорию почитать...

А если Вы в пределах одного сервера из своих же скриптов через HTTP получаете данные - то мне остается только посочувствовать Вашему заказчику.

Chas
25.04.2007, 21:34
ой, не надо кидать понты. гордыня - наказуемый богом грех.
коннектор предназначен для флешки, которая _естественно_ на этом же хосте, а тут мне просто понадобилась приблуда, где я смогу тестировать правильно ли выдается коннектором xml-ка.
если бы я хотел передать содержимое сессии на другой хост, я бы это сделал.

Skubent
26.04.2007, 12:26
Chas, о грехах наших скорбных разговаривать - это к попам или к Горбатому.
А незнание - оно только для блаженных хорошо.
Рекомендую все же почитать про HTTP протокол, чтобы таких вот вопросов не возникало. Потому что флэшка "_естественно_ на этом же хосте" - это супер.
У Вас сервер на флэше работает ? Или все же флэшка будет работать у пользователя и таки отправять запросы к серверу ? И, если будет отправлять их, то каковы будут заголовки запросов и заголовки ответов сервера ?