Доступ к данным сессии через id сессии.

slamer3000

Новичок
Доступ к данным сессии через id сессии.

Есть такая проблема с сессиями.
Есть 2 сервера:
Сервер1 и Сервер2.
Есть 4 php-скрипта: На сервере1 - скрипт1, скрипт2, скрипт3;
На сервере2 - скрипт4.

скрипт1 - форма для считывания данных, которые вводит пользователь.
При нажатии им на кнопку "Отправить" данные перекидываются для обработки в скрипт2.

скрипт2 - создаёт сессию и пихает туда данные, а также делает редирект
на скрипт4 сервера2, куда передаёт ID сессии. Типа:
PHP:
     session_start();
     $id=session_id();
     $_SESSION["text_info"]=$_POST["text_info"];
     // ..... 
     header("Location: http://www.server2.com/script4.php?id=".$id);
скрипт4 - принимает ID сессии и отправляет скрытый запрос curl'ом на скрипт3 на сервере1,
куда тоже передаёт этот же ID сессии и какие-то новые данные. Типа:
PHP:
     //...
     $ch = curl_init();
     curl_setopt ($ch, CURLOPT_URL,"http://www.server1.com/script3.php");
     curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
     curl_setopt ($ch, CURLOPT_POST, 1);
     curl_setopt ($ch, CURLOPT_POSTFIELDS, "id=".$_REQUEST["id"]);
     $result=curl_exec($ch);
     echo $result;
скрипт3 - получает запрос от скрипта4 с сервера2 и записывает в созданную ранее сессию
данные. Типа:
PHP:
    session_id($_REQUEST["id"]);
    $_SESSION["new_text"]="Some Text";
    print_r($_SESSION);
Так вот. В результате всего на экрано должно выдать содержимое сессии. То есть
элемент массива с именем text_info тоже должен быть выдан на экран, как и new_text.
Но выдаётся пустота.
Почему не устанавливается session_id($_REQUEST["id"]) ?
Может, что-то ещё нужно дописать?
 

Сергей Тарасов

Профессор
Как я понимаю ты передаешь id сессии одного сервера на другой, который ничего не знает о той и для него это пустой звук. :)
 

slamer3000

Новичок
Я передаю id сессии одного сервера на другой сервер, а потом с того другого назад на первый этот же id'шник. И тут этот первый сервер, где и была создана эта сессия, не хочет в неё заходить 2-й раз.

Ура! Въехал! После session_id(...)
надо было вызвать session_start();
в третьем скрипте.
 

Mr_Max

Первый класс. Зимние каникулы ^_^
Команда форума
Так вот. В результате всего на экрано должно выдать содержимое сессии. То есть
элемент массива с именем text_info тоже должен быть выдан на экран, как и new_text.
Но выдаётся пустота.
PHP FAQ: Сессии. Подробное описание работы и объяснение механизма.

-~{}~ 17.07.07 11:26:

slamer3000
Ура! Въехал! После session_id(...)
надо было вызвать session_start();
в третьем скрипте.
Ну, ну...

Интересно что будет, когда дойдёте до 4-го скрипта.
 

Zetruger

ivan.chistyakov.name
попробуй так

3:
-------------------------
PHP:
$ch = curl_init();
curl_setopt ($ch, CURLOPT_URL,"http://www.server1.com/script3.php");
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt ($ch, CURLOPT_COOKIE, 1);
curl_setopt ($ch, CURLOPT_COOKIEFILE, "PHPSESSID=".$_REQUEST["id"]);
$result=curl_exec($ch);
echo $result;
-------------------------

4:
-------------------------
PHP:
session_start();
$_SESSION["new_text"]="Some Text";
print_r($_SESSION);
-------------------------
 

Mr_Max

Первый класс. Зимние каникулы ^_^
Команда форума
Zetruger
Да ну?...

-------------------------
session_start();
$_SESSION["new_text"]="Some Text";
print_r($_SESSION);
-------------------------
То, что данный код у Вас под виндой работает не гарантирует, что это будет работт на хостинге
 

slamer3000

Новичок
PHP:
session_id($_REQUEST["id"]); 
session_start();
$_SESSION["new_text"]="Some Text"; 
print_r($_SESSION);
И мне выдало всё верно.
Сессия состояла и из "new_text" и из "text_info"
 

Mr_Max

Первый класс. Зимние каникулы ^_^
Команда форума
slamer3000
Включаем голову и думаем!
Где хранятся файлы сессий на хостинге?
 

slamer3000

Новичок
Хотите сказать, что не будет работать в Линуксе на серваке?
Не будет доступа?
 

Mr_Max

Первый класс. Зимние каникулы ^_^
Команда форума
slamer3000

Хотите сказать, что не будет работать в Линуксе на серваке?
Не будет доступа?
Вряд-ли файлы сессий всех сайтов хранятся в одной папке правда ведь?

-~{}~ 17.07.07 11:47:

А если хранятся, то менять такой хостинг нужно.
 

slamer3000

Новичок
Запрос к сессии ведётся только на сервере1.
На сервере2 идёт чисто отправка запроса. Он не имеет доступ к файлам сессии и ему он и не нужен.
Последний скрипт выполняется на том же сервере (сайте), где и была создана сессия.
 

Zetruger

ivan.chistyakov.name
Mr_Max
PHP:
session_start(); 
$_SESSION["new_text"]="Some Text"; 
print_r($_SESSION);
а что в линуксе какой-то php особенный? хе-хе...

-~{}~ 17.07.07 13:02:

slamer3000

зачем только это может понадобиться?
 
Сверху