2013-03-19 3 views
-1

этот код:PHP: как использовать два различных сессий в одном запросе

<?php 

session_name('sess1'); 
session_start(); 
$_SESSION['a']=1; 
session_write_close(); 

session_name('sess2'); 
session_start(); 
$_SESSION['b']=2; 
session_write_close(); 

session_name('sess1'); 
session_start(); 

echo '<pre>'; 
print_r($_SESSION); 
echo '</pre>'; 

?> 

печатает:

Array 
(
    [a] => 1 
    [b] => 2 
) 

Как видим, оба вары ¨R хранятся в первой сессии (файл).

Мне нужно и ожидалось другого поведения. Мне нужны два разных сеанса.

Почему php ведет себя так? разве это не ошибка?

+1

Почти наверняка вы * не нуждаетесь в двух разных сеансах. Расскажите, что вы пытаетесь сделать. – Jon

+0

Я разработал систему регистрации и входа в систему, у которой есть свой сеанс (действительно, содержимое сеанса r зашифровано прозрачно). Я хочу, чтобы другие могли включать его в свои программы, не вмешиваясь в их собственные сеансы. также моя сессия имеет свои собственные настройки (например, cookie_lifetime), которые я не хочу вмешиваться в сеансы других программ, которые используют мою систему. –

+0

Я не думаю, что это ошибка, вы пишете в той же сессии оба раза. И вы тогда читаете с этого сеанса. session_name ($ session_name) обновляет имя, оно не создает новый. – codea

ответ

1

[from comments] Я хочу, чтобы другие могли включать его в свои программы, не вмешиваясь в их собственные сеансы.

И вы хотите добиться этого, массивно вмешиваясь в обработку сеанса ...?

Я не думаю, что это хорошая идея. Скорее всего, вы будете добавлять к проблемам, которые есть у пользователей с сеансами, когда вы отправляете такой «неортодоксальный» способ игры с сеансами.

также мой сеанс имеет свои настройки (например, cookie_lifetime), что я не хочу вмешиваться в сеансы других программ, которые используют мою систему.

Почему система входа в систему, которую я внедряю на свою страницу, имеет другое время работы сеанса, чем остальное, что я делаю с моей сессией? Мне мало смысла.

Я разработал систему регистрации и входа, у которой есть своя сессия (действительно, содержимое сеанса r зашифровано прозрачно).

Если держать ваши данные зашифрованы, оставляя остальную часть моей сессии, как обычный текст ваша главная забота - то вы можете легко создавать свой собственный ключ в массиве сеанса, и только зашифровать данные, которые находятся под этим ключом.

+0

ОК не берут на себя конкретный вопрос/мой сценарий. если u использует только 'session_name ('sess1')' в одном запросе/странице и 'session_name ('sess2')' в другом запросе/странице, тогда php создаст два разных сеанса, каждый со своим собственным файлом сеанса & vars (if u хочу протестировать его, не забудьте заранее удалить старые cookie сеанса). afaik - это приложение, которое используется в некоторых программах; можете ли вы сказать, что никогда не может быть какой-либо причины для такой программы, которая хочет получить доступ к обеим сессиям (возможно, только изредка/в конкретных ситуациях) по одному запросу?(может быть, только для чтения, а не для записи) –

+1

Я не говорю, что, возможно, не было бы вариантов использования, где это может быть приятно/пригодится - но я говорю, что это вмешивается в «нормальный» способ что PHP-сессии работают так много, что это, скорее всего, приведет к осложнениям, особенно когда люди, у которых, вероятно, не так много знаний, попытаются встроить их в существующие собственные скрипты. И я не вижу реального вреда в «совместном использовании» одного и того же сеанса со сценариями, которые вы планируете интегрировать в систему входа. – CBroe

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