2009-09-29 3 views
0

Мне нравится идея так называемого идентификатора сеанса, который отправляется в браузер и возвращается обратно для auth. Но могу ли я хранить больше данных в переменных сеанса сервера, для доступа к последующим сеансам? Я использую PHP.Перечислены ли все переменные сеанса через HTTP?

ответ

10

Переменные сеанса хранятся на стороне сервера. Только идентификатор сеанса будет отправлен обратно с клиента. Сервер будет искать хранилище сеансов для идентификатора и получать переменные. Фактические переменные - , а не, отправленные клиенту. Это делает состояние сеанса кошмаром для масштабируемых веб-приложений, поскольку он полагается на сервер, чтобы отслеживать состояние пользователей. Чем больше вещей вы вкладываете в сеанс, тем больше накладных расходов на каждый сеанс вы будете иметь на сервере.

Если вы хотите хранить переменные на самом клиенте, вы должны использовать файлы cookie вместо сеанса.

2

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

В PHP хранить больше данных в сессии, просто сделать это:

--set.php-- 
session_start(); 
$_SESSION['var1'] = 'foo'; 
$_SESSION['var2'] = 'bar'; 

--look.php-- 
print_r($_SESSION); // prints Array (var1 => foo, var2=>bar) 
+1

Иногда вам нужно добавить session_write_close(); после записи переменных сеанса, чтобы заставить их – user97410

1

Нет, как я понимаю, единственное, что передано это идентификатор сеанса, через куки.

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