【问题标题】:how to close the session and redirect to index page when browser in closed浏览器关闭时如何关闭会话并重定向到索引页面
【发布时间】:2017-04-18 07:10:53
【问题描述】:

我想在关闭选项卡时清除会话变量,但到目前为止我找不到任何解决方案。这里用户没有登录,他们将输入 url 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();
 }
 }
?>

【问题讨论】:

    标签: php session


    【解决方案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']);
       }
    }
    

    【讨论】:

    • 谢谢@Pravin Vavadiya 先生
    • 请检查我更新的代码,成功登录意味着它会进入dashboard.php页面。然后我刷新页面意味着它会再次进入登录页面,不应该这样
    • "在所有页面上添加以下代码,在任何输出之前检查用户是否来自 xyz.php".. 在您的 dashboard.php 中首先在检查电子邮件后添加此代码... .
    【解决方案2】:

    要删除特定的会话数据,试试这个

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

    要销毁所有会话数据 - 尝试session_destroy()

    Stackoverflow 已经讨论过了

    参考Session destroy when logout

    【讨论】:

      猜你喜欢
      • 2013-08-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-01-16
      • 1970-01-01
      相关资源
      最近更新 更多