2010-06-03 1 views
0

У меня есть сайт, который я тестировал в подпапке корневого сайта моего клиента. У меня не было проблем с журналом во время тестирования, но затем я переместил новые файлы сайта из подкаталога в корень основного сайта, и теперь я теряю состояние входа в систему после почти каждой обновления страницы в безопасных областях.Проблема с регистрацией на основе сеанса после перемещения соответствующих файлов на сайт root

Я запускаю систему входа на основе $ _session, которая обновляет идентификатор сеанса на каждой загрузке страницы со значением сравнения, хранящимся в базе данных MySQL.

У кого-нибудь есть предложения по поводу того, что может вызвать эту проблему?

+0

DEBUUUUUUUG it! Отлаживайте его сначала, и только тогда оба спрашивают и ** отвечают **! –

ответ

0

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

Способ исправления заключается в том, чтобы поместить страницу перенаправления на старый поддиректор, который добавляет куки-файл в '/', а затем перенаправляет на новый сайт с правами root.

+0

Не уверен, что я следую. Этот подкаталог не будет присутствовать в окончательном развертывании. – YsoL8

+0

Файл cookie в браузере обычно устанавливается для определенного пути, так что, например, страницы под/web-app-one не могут читать файлы cookie из/web-app-two. – krico

+0

session.cookie_path установлен в/в phpinfo. Это звучит правильно, поскольку все материалы безопасности обрабатываются в одной папке. – YsoL8

0

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

<?php 
session_name('AnySessName'); 
?> 

или использовать другой механизм для хранения переменных перекрестных сессий.

+0

Извините, я имею в виду значение, называемое $ _session ['id']. Это все еще применяется? – YsoL8

+0

ОК. Вы можете написать ' ' на вашей странице. Изменилось ли это после перегрузки страницы? Браузер хранит идентификатор сеанса в файлах cookie – GOsha

+0

, который ничего не возвращает! – YsoL8

1

krico был прав, предлагая, что путь к файлу cookie может быть причиной (но предлагаемое решение кажется немного глупым), однако вы сказали, что это не так.

Проверьте, чтобы увидеть точно, что печенье (имя, путь, экспирации, флаги) создаются и возвращаются с помощью iehttpheaders (MSIE) LiveHeaders (Firefox) или с помощью сетевого сниффера как Wireshark. Затем задайте вопрос, в котором подробно рассказывается о том, что вы узнали.

C.

+0

по запросу http://stackoverflow.com/questions/2965878/intermitant-sessions – YsoL8

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

  • Нет связанных вопросов^_^