2012-03-27 4 views
1

бит предыстория к этому ...Упорство PHP сессии после закрытия обозревателя

У меня есть ASP.NET Войти приложение на моем сайте, и как только вошли в систему, я могу перейти к WordPress (PHP) на стороне (все еще в том же домене), сохраняя сеанс. Смотрите, как это работает.

Однако проблема возникает, если я закрываю свой браузер, а затем теряю сессию PHP, несмотря на сохранение сеанса ASP.NET. Поэтому я «вышел из системы» на стороне PHP, но все же «вошел в систему» ​​на стороне .NET.

- Есть ли способ, используя мой существующий код, установить время жизни в сеанс/файл cookie, чтобы избежать смены сеанса/файла cookie при закрытии моего браузера? -

Я pastie'd мой текущий код PHP от моего шаблона <head> здесь: http://pastie.org/private/ndcqgbog34uqld1etozda, который проверяет и сохраняется сеанс.

Я действительно посмотрел this example on PHP.net, но путался, как использовать его в моем решении.

Большое спасибо за любые указатели с этим.

ответ

1

Думаете, вы должны использовать setcookie() с истечением срока годности (см. here). Вы только настраиваете материал в сеансе (скопировано из файлов cookie, похоже, но я не уверен, что такое их жизнь).

Вместо этой линии:

$_SESSION[DOT_NET_SESSION][ $tuple['SessionName'] ] = 
    $tuple['SessionValue']; 

Попробуйте это:

$cookie = array($tuple['SessionName'] => $tuple['SessionValue']); 
setcookie(DOT_NET_SESSION, $cookie, time() + 60 * 60 * 24); 

Это должно установить печенье на день, я думаю.

+0

Хороший звонок. В настоящее время я просто храню значения в базе данных и использую мой PHP для проверки этих значений. Можете ли вы показать мне, как лучше всего это сделать, используя мой существующий код? – michaelmcgurk

+1

Я добавил пример, но вам придется нести со мной - я делаю много symfony, так что прошло некоторое время, так как я коснулся основных реализаций файлов cookie/сеансов! ':)'. Таким образом, вам придется немного поиграть с ним. Фокус в том, чтобы посмотреть ваши данные cookie в браузере (например, Firefox), чтобы узнать, правильно ли вы это сделали. – halfer

+0

Хех, не беспокойся, сэр.Большое спасибо за публикацию примера. Я дам ему попробовать за секунду и отчитаюсь. – michaelmcgurk

1

Есть две вещи, которые вам нужно сделать.

  1. Set the cookie lifetime (он по умолчанию 0, что PHP interperates как "До тех пор пока браузер не закроется")
  2. Configure the session garbage collection lifetime. Это определяет, как задолго до того, как данные сеанса на стороне сервера будут уничтожены.

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

+0

Привет, GordonM. Большое спасибо сначала за ваши инструкции и рекомендации по безопасности. Можете ли вы показать мне, как я набираю первые 2 балла, используя свой php-код в пастике? Я понимаю, что делать, но на самом деле путают, как Очень ценю любую помощь Вот. – michaelmcgurk

+1

Вы делаете это в конфигурации PHP (php.ini) – GordonM

+0

Aaaah отлично. Я постараюсь установить их в ближайшее время и держать вас в курсе. – michaelmcgurk

0

Вы должны хранить некоторые данные в cookie браузера пользователя. то, если пользователь вернется к вашему bage, вы выполните блок проверки вашего кода.

для просмотра в полном объеме How to do auto login, store the session in the browser

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