2012-05-09 5 views
0

Я работаю над проектом php. Все, что я хочу сделать, когда я закрываю браузер так, чтобы он не отключился или не уничтожил сеанс.Как уничтожить сеанс при закрытии браузера в mac os?

Здесь я также попытался

ini_set ('session.cookie_lifetime', 0) и session_set_cookie_params (0) перед session_start();

Он отлично работает в ОС Windows, но не в MAC os.

Спасибо заранее.

+0

Какой браузер вы используете? –

+0

chrome и firefox – nic

+0

вы ** тоже ** попробовал этот код. Что вы пробовали до этого? И что вы намерены делать технически? Какую особенность (ы) спецификации cookie вы хотите использовать? Вы знаете, что есть спецификация cookie? – hakre

ответ

4

В сеансе есть две части.

  1. Данные, хранящиеся на сервере
  2. Куки с идентификатором сессии на клиенте

Там нет никакого надежного способа для удаления данных на сервере, когда браузер закрыт. Каждая разумная система сеансов просто периодически очищает старые данные (если не было признаков связанного браузера в течение N минут).

Куки-файлы в браузере обычно отправляются без истечения срока действия, что означает, что он истечет при выходе из браузера. Это работает надежно.

Если все, что у вас есть, делает то, что вы хотите на клиентах Windows, тогда я бы предположил, что вы говорите об истечении срока действия cookie.

Это произойдет как на Mac, так и на Windows. Мое лучшее предположение - проблема с вашим тестированием. В Windows приложения обычно выходят, когда последнее окно закрыто. На Mac приложения обычно требуют, чтобы вы явно закрыли их, но остаетесь открытыми, если вы просто закроете последнее окно.

Чтобы убедиться, что срок действия файла cookie истекает, вы должны явно выйти из браузера (выбрав «Выход» из меню или щелкнув правой кнопкой мыши и выбрав выход на значке в Доке).

Невозможно обнаружить сервер при закрытии последнего окна и удаленном удалении сеанса.

1

это работает нормально в Windows,

Это более или менее означает, что он работает.

, но не работает в Mac OS

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

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