2011-12-23 4 views
1

В моем проекте, я пытаюсь получить доступ к данным сеанса из 2-х файлов, расположенных в 2-х разных каталогах:не может получить доступ к сессии данных

/site/page.extension.php  <-- initializes the session and writes data to it 
           - also sets a cookie with session_id() and session_name() 
/extension/ajax_handler.php <-- tries to access the session data, session_id() 
           - and session_name() are set via cookie and return the correct values 

Теперь моя проблема в том, что даже если session_id() и session_name() одинаковы в обоих файлах, я не могу получить доступ к массиву session, он просто возвращает пустой массив.

Мой код: page.extension.php:

session_start(); 
setcookie("psc_session", session_id(), strtotime("+20 minutes"), "/"); 
setcookie("psc_session_name", base64_encode(session_name()), strtotime("+20 minutes"), "/"); 
$_SESSION['uid'] = system::current_user_id(); 

ajax_handler.php:

session_id($_COOKIE['psc_session']); 
session_name(base64_decode($_COOKIE['psc_session_name'])); 
session_start(); 
print_r($_SESSION); // => array(0) { } 

Я был бы очень признателен за любую помощь! Приветствую!

Update: Я попытался установить печенья Params сессии, используя это в page.extension.php:

$url = str_replace("http://", '', current_url(false)); // returns the current domain 
session_set_cookie_params(10800, "/", $url, 0, 1); 

Если я теперь получить доступ к session_get_cookie_params я получаю (в ajax_handler.php):

print_r(session_get_cookie_params()); // => 
Array 
(
    [lifetime] => 0 
    [path] =>/
    [domain] => 
    [secure] => 
    [httponly] => 
) 

Почему это происходит?

+0

Что такое 'system :: current_user_id();'? – Neal

+0

он просто возвращает числовой идентификатор пользователя, который в настоящее время вошел в систему (cookie) – n0pt3x

+0

В чем причина этого интересного метода, который у вас здесь есть? – Neal

ответ

0

Я не могу реплицировать вашу проблему, воссоздавая код, предоставленный вами переменными сеанса, и файлы cookie остаются нетронутыми и доступны из ajax_handler.php. Я предлагаю вам вернуться и убедиться, что оба файла запрашиваются из одного домена.

Смежные вопросы