2013-08-04 2 views
-1

Может ли кто-нибудь объяснить мне, как работает фиксация сеанса? На мой локальный сервер я загрузил файл с этим кодом:Как сделать фиксацию сеанса?

<?php 
session_start(); 
if (!isset($_SESSION['count'])) $_SESSION['count'] = 0; 
else ++$_SESSION['count']; 
echo $_SESSION['count']; 
?> 

я установил в своем браузере адрес: http://localhost/sessiontest.php?PHPSESSID=1234 Он начнется только с 0 прописан, после того, как несколько раз нажал кнопку обновления он будет идти до 1.2.3 , 4, ... В книге и на интернет-теме, которую я читал раньше, там написано, что если я использую этот адрес в браузере в другом браузере или на другом ПК, он покажет номер, который был окончен первым браузером mz. Однако, когда я набрал этот адрес на второй компьютер, он начинал с 0.

Как-то он был обеспечен в более высокой версии Apache и PHP или я полностью не понял эту тему? Спасибо за помощь!

+0

Вы ссылаетесь на книгу __Learning PHP, MySQL, JavaScript и CSS__ Робин Никсон? – jreut

+0

@jreut да, второе издание, но я нашел почти такой же пример здесь: http://shiflett.org/articles/session-fixation –

ответ

2

Я думаю, что вы, возможно, неправильно поняли. PHP использует PHPSESSID для хранения идентификатора сеанса. Обычно это значение сохраняется в файле cookie, но оно также может быть сохранено в URL-адресе, если файлы cookie отключены.

Если вы читаете значение URL-адреса (или файла cookie) в одном браузере, вы можете использовать это значение в URL-адресе в другом браузере, чтобы эффективно принять этот сеанс. Это связано с тем, что PHP не отслеживает какую-либо информацию, а просто использует этот идентификатор сеанса для идентификации сеанса.

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

+0

Большое спасибо, теперь я больше понимаю мою тему! Еще раз спасибо –

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