Сессия PHP не работает в PHP5 - PullRequest
2 голосов
/ 18 мая 2009

У меня есть 2 страницы: login.php и index.php. Обе страницы начинаются с

session_start();

Когда я установил

$_SESSION['user'] = "name"; 

в login.php, а затем откройте index.php, мой объект сеанса пуст. Как получилось?

EDIT:

Я обнаружил проблему: IE 7. Мне был необходим доступ к моему домену. Тем не менее, я думал, что сеанс хранится на сервере, а не на клиенте? Чем у меня IE грандиозный доступ к моему домену? (http://www.pcwindowstips.com/2007/09/04/how-to-enable-cookies-in-internet-explorer-7/)

Ответы [ 6 ]

6 голосов
/ 18 мая 2009

Я думал, что сеанс хранится на сервере, а не на клиенте? Чем я могу предоставить IE доступ к своему домену? (http://www.pcwindowstips.com/2007/09/04/how-to-enable-cookies-in-internet-explorer-7/)

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

По этой же причине вы можете «стать» другим пользователем, если получите его cookie с идентификатором сессии.

2 голосов
/ 08 ноября 2012

Вот что случилось со мной, что может пролить свет на кого-то. Мой сеанс не работал должным образом. IE 8 и Firefox теряли информацию о сеансе.

Я включил файл. У этого включенного файла был дополнительный возврат каретки после завершающего & задания?>

Этот возврат каретки начал сеанс. Я ставлю session_start после включения. БУМ.

2 голосов
/ 09 ноября 2010

Возможно, эта переменная в php.ini отображает существующий путь

session.save_path = "c: / неправильный / путь"

2 голосов
/ 18 мая 2009

Internet Explorer имеют более строгую политику в отношении файлов cookie, чем большинство других браузеров. Проверьте параметры cookie cookie (см. Также session_get_cookie_params()) и попробуйте заменить значения по умолчанию явными значениями, где это возможно. Кроме того, вы можете отправить [поддельную политику P3P] (http://msdn.microsoft.com/en-us/library/ms537343(VS.85).aspx), чтобы удовлетворить Internet Explorer.

1 голос
/ 18 мая 2009

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

1 голос
/ 18 мая 2009

Мало информации здесь, я попытаюсь использовать свои экстрасенсорные способности.

После того, как пользователь войдет в систему, вы устанавливаете сеанс var, а затем перенаправляете пользователя в index.php, используя заголовок http? Если это так, я не думаю, что куки-файл сеанса будет отправлен пользователю. Если это так, решения:

  1. вызывать session_start (), когда форма входа в систему первоначально отображается (не только после того, как пользователь отправляет обратно); или:
  2. отображать "вход в систему успешен!" сообщение, а затем перенаправить с мета-обновлением или просто предоставить ссылку на index.php.

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

echo 'Session ID is: ' . SID . "<br/>\n"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...