2016-12-03 73 views
1

我想要在關閉標籤時清除會話變量,但到目前爲止我找不到任何解決方案。這裏用戶沒有登錄他們將輸入網址dashboard.php意味着它將重定向到index.php,這個條件工作正常,現在用戶成功登錄意味着它會去dashboard.php頁面後,該用戶關閉此選項卡,他們會再次進入dashboard.php頁面意味着我想要的頁面重定向的index.php中,如何才能做到這一點如何在關閉瀏覽器時關閉會話並重定向到索引頁

<?php 
    session_start(); 
    date_default_timezone_set('Asia/Kolkata'); 
    include('dbconfig.php'); 
    $email=$_POST['email']; 
    $password=$_POST['password']; 
    $password=md5($password); 
    $sql=mysql_query("SELECT id,username,email,password,is_user_type FROM login WHERE email='$email' AND password='$password'"); 
    list($id,$username,$email,$pwd,$is_user_type)=mysql_fetch_row($sql); 
    if($pwd==$password){ 
    $_SESSION['username']=$username; 
    $_SESSION['email']=$email; 
    $_SESSION['is_user_type']=$is_user_type; 
    $_SESSION['current'] = basename($_SERVER['PHP_SELF']); 
    header("Location:dashboard.php"); 
    } 
    else{ 
     echo "error"; 
    } 
    ?> 

dashboard.php 
<?php 
session_start(); 
if(!isset($_SESSION['email']) && empty($_SESSION['email'])) { 
    header("Location:index.php"); 
} 
if (isset($_SESSION['current'])) { 
if (basename($_SERVER['PHP_SELF']) != $_SESSION['current']) { 
    session_destroy(); 
} 
} 
?> 

回答

1

首先,你xyz.php文件中設置的$ _SESSION數組中的唯一變量,它作爲一個標誌用戶已經在此頁

$_SESSION['previous'] = basename($_SERVER['PHP_SELF']); 

然後,添加在所有頁面下面的代碼,任何輸出前要檢查用戶是否即將回回米xyz.php

if (isset($_SESSION['previous'])) { 
    if (basename($_SERVER['PHP_SELF']) != $_SESSION['previous']) { 
    session_destroy(); 
    unset($_SESSION['previous']); 
    } 
} 
+0

謝謝Mr @ Pravin Vavadiya –

+0

我得到的答案正是我想要的.. –

+0

請檢查我更新的代碼,成功登錄意味着它將轉到dashboard.php page.then我刷新頁面意味着它將再次登錄頁面,不應該這樣來 –

0

要刪除特定會話數據,試試這個

if($_SESSION[sessionvaribale]) 
    { 
    unset($_SESSION[sessionvaribale]); 
    } 

銷燬所有會話數據 - 嘗試已經被討論#1 session_destroy()

參考Session destroy when logout