2012-02-03 4 views
0

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

Мой проект:

Index.php -> userdata.php -> reports.php -> finalreport.html

возможно обрабатывать сессии уничтожить?

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

Пожалуйста, дайте мне знать, как мы можем справиться с этим.

+1

Браузеры уже отбрасывают [сеансовые куки] (http://en.wikipedia.org/wiki/HTTP_cookie#Session_cookie), когда заканчивается сеанс браузера; чего не хватает, или это не так? – Gumbo

+0

Это о сеансе браузера или «server-session» (содержимое $ _SESSION) – J0HN

ответ

5

сеанс уничтожается, когда пользователь закрывает браузер **. если вы хотите уничтожить его, как только пользователь выгрузит страницу, вы можете добавить обработчик события разгрузки страницы (что-то вроде jquery unload) и выполнить запрос ajax для скрипта, который просто очищает сеанс.

EDIT: по запросу OP я добавлю специальный код.

1) на всех страницах (Index.php, userdata.php, reports.php, finalreport.html) добавить этот код Javascript

$(window).unload(function() { 
    $.get('session_destroyer.php'); 
}); 

2) в session_destroyer.php использовать этот код (взято из php.net)

<?php 
// Initialize the session. 
// If you are using session_name("something"), don't forget it now! 
session_start(); 

// Unset all of the session variables. 
$_SESSION = array(); 

// If it's desired to kill the session, also delete the session cookie. 
// Note: This will destroy the session, and not just the session data! 
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, я думаю)

+0

Вы ошибаетесь. Браузер отбрасывает только cookie сеанса (если это фактически [cookie сеанса] (http://en.wikipedia.org/wiki/HTTP_cookie#Session_cookie)). Фактическая сессия все еще жива. – Gumbo

+0

, но я хочу удалить временные файлы, созданные во время уничтожения сеанса. – vineel

+0

проверить первый пример на этой странице http://www.php.net/manual/en/function.session-destroy.php – Bogdan

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