Intereting Posts
Форма представления не будет оставаться на одной странице Magento – используя $ this-> getPriceHtml на настраиваемом шаблоне страницы php xpath, связанный с апострофом / одиночной цитатой в искомом тексте phpmyadmin работает нормально, но я не могу найти файл config.inc.php? Как получить ошибки отображения на PHP? (Я добавил ini_set и error_reporting, но просто дает 500 ошибок) .htaccess не перенаправлять на страницу с ошибкой как получить данные mysql с помощью ajax, когда один вход заполнен Правильно отображать результаты запроса mySQL one-to-many Как создать и сохранить пароли md5 в mysql Многопользовательский поисковый запрос PHP MySQL с использованием опции / выбора тегов HTML-формы PHP Regex для строки с буквенно-цифровыми и специальными символами Подключите несколько таблиц, используя LEFT OUTER JOIN Symfony 2 Вход только в основной домен Определите, является ли 10-значная строка действительной. Amazon ASIN Пользовательский шаблон таксономии по умолчанию не выбран

PHP – сеанс уничтожить после закрытия браузера

Хотя этот вопрос имеет несколько дубликатов, я не мог найти подходящего решения для меня. Нужна помощь.

Я использовал ini_set('session.cookie_lifetime', 0); в моем файле конфигурации.

Но это не помогает мне уничтожать сеанс в браузере.

Прикладной ток:

1) На странице аутентификации, если пользователь действителен, сгенерируйте новый идентификатор сеанса, используя session_regenerate_id(true);

2) Control переходит на welcome.php, где я запускаю новый сеанс, используя session_start();

3) в коде страницы выхода

  $_SESSION = array(); if (ini_get("session.use_cookies")) { $params = session_get_cookie_params(); setcookie(session_name(), '', time() - 42000, $params["path"], $params["domain"], $params["secure"], $params["httponly"] ); } // Finally, destroy the session. session_destroy(); 

Лучший способ – закрыть сеанс: если нет ответа на этот сеанс после определенного интервала времени. затем закрыть. Пожалуйста, см. Этот пост, и я надеюсь, что он решит проблему. « Как изменить тайм-аут сеанса в PHP? »

Используйте keep keep.

При входе в систему:

 session_start(); $_SESSION['last_action'] = time(); 

Один вызов ajax каждые несколько (например, 20) секунд:

 windows.setInterval(keepAliveCall, 20000); 

Серверная сторона keepalive.php:

 session_start(); $_SESSION['last_action'] = time(); 

На каждое другое действие:

 session_start(); if ($_SESSION['last_action'] < time() - 30 /* be a little tolerant here */) { // destroy the session and quit } 

Существуют разные способы сделать это, но сервер не может обнаружить, когда браузер закрывается, поэтому его уничтожить трудно.

  • тайм-аут.

Либо создайте новый сеанс с текущим временем, либо добавьте временную переменную в текущий сеанс. а затем проверьте его при запуске или выполните действие, чтобы увидеть, должен ли сеанс быть удален.

 session_start(); $_SESSION["timeout"] = time(); //if 100 seconds have passed since creating session delete it. if(time() - $_SESSION["timeout"] > 100){ unset($_SESSION["timeout"]; } с session_start(); $_SESSION["timeout"] = time(); //if 100 seconds have passed since creating session delete it. if(time() - $_SESSION["timeout"] > 100){ unset($_SESSION["timeout"]; } - session_start(); $_SESSION["timeout"] = time(); //if 100 seconds have passed since creating session delete it. if(time() - $_SESSION["timeout"] > 100){ unset($_SESSION["timeout"]; } 
  • Аякса

Сделайте javascript выполнить ajax-вызов, который удалит сеанс, с onbeforeunload() javascript, которая вызывает окончательное действие, когда пользователь покидает страницу. По какой-то причине это не всегда работает.

  • удалите его при запуске.

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

 <? php session_start(); unset($_SESSION["session"]); 

и, вероятно, есть еще кое-что.

Это может помочь вам,

 session_set_cookie_params(0); session_start(); 

Ваш cookie сеанса будет уничтожен … поэтому ваш сеанс будет хорошим, пока браузер не будет открыт. пожалуйста, просмотрите http://www.php.net//manual/en/function.session-set-cookie-params.php, это может вам помочь.

Вы можете сделать это с помощью JavaScript, вызвав запрос ajax на сервер, чтобы уничтожить сеанс в событии onbeforeunload, когда мы закрываем вкладку обзора или окно или браузер.

Для уничтожения сеанса используйте следующий код:

  <?php session_start(); unset($_SESSION['sessionvariable']); header("Location:index.php"); ?> с  <?php session_start(); unset($_SESSION['sessionvariable']); header("Location:index.php"); ?> 

Есть еще один «хак» с помощью HTTP Referer (мы предполагаем, что окно браузера закрыто, имя домена текущего реферала и доменное имя текущей страницы не совпадают):

 session_start(); $_SESSION['somevariable'] = 'somevalue'; if(parse_url($_SERVER["HTTP_REFERER"], PHP_URL_HOST) != $_SERVER["SERVER_NAME"]){ session_destroy(); } 

Это также имеет некоторые недостатки, но это помогло мне несколько раз.

Если вы смущены, что делать, просто обратитесь к руководству функции session_destroy () :

http://php.net/manual/en/function.session-destroy.php

Там вы можете найти еще несколько функций session_destroy ().