2013-06-07 3 views
0

У меня есть 2 каталога на сайте, dir1 и dir2, и мне нужно это сделать: когда скрипт записывает сеанс из dir1, его нельзя прочитать из dir2. Это возможно? Я пробовал session_set_cookie_params(0,'/dir1/'), но в любом случае вы можете получить доступ к этому сеансу var из dir2.Есть ли способ сохранить сессию PHP для определенного пути?

+3

try 'session_save_path()' – claustrofob

+1

Вы называете 'session_set_cookie_param' перед' session_start'? –

+0

Вы должны посмотреть, может ли ваш хостинг определить эти настройки для каждого каталога, так что вам не придется проходить через это каждый раз, когда скрипт вызывается в кодировке. – CBroe

ответ

0

Это обычно делается с помощью пространств имен. Вы должны назначить пространство имен имен (простой строковый идентификатор) для своих запросов, а затем предоставить некоторую оболочку для доступа к сеансу на основе этого пространства имен.

Что такое пространство имен сеансов? Просто атрибут сеанса, который содержит ассоциативный массив, который затем действует как ваш сеанс. Ваша сессия будет выглядеть следующим образом:

$_SESSION (
    "DIR1_NAMESPACE" => array(), 
    "DIR2_NAMESPACE" => array(), 
) 

Современных основы PHP обычно поддерживают сеанс пространств имен (например, http://framework.zend.com/manual/2.1/en/modules/zend.session.container.html).

Так что в конце концов вам не нужно хранить полностью разделенные сеансы. Вы просто разделили существующую сессию на несколько хранилищ.

+1

большое вам спасибо! Я просто использовал session_name ('DIR1'), и все работает правильно. – Slicer

0

$_SESSION глобальная переменная, я не уверен, если это возможно, чтобы контролировать для конкретного за доступностью каталога, но может быть немного идея:

if(__DIR__ === 'dir2') 
{ 
    unset($_SESSION['from']['dir1']); 
} 
Смежные вопросы