如何在不影响其他页面的情况下注销页面?

时间:2016-04-12 06:40:55

标签: php

有两个登录页面,如果一个页面被注销,其他页面也会自动注销如何更改?

adminlogout.php

    <?php
    session_start();
    unset($_SESSION['ADMIN_UNAME']);
    session_destroy();
    header("location: adminlogin.php?logout=true");
 ?>

logout.php

<?php
  session_start();
  unset($_SESSION['SESS_MEMBER_ID']);
  session_destroy();
  header("location: login.php");
?>

5 个答案:

答案 0 :(得分:0)

请删除session_destroy()函数。 session_destroy()从服务器删除带有sessionid的请求的完整会话信息。因此两个脚本都会注销。

adminlogout.php

<?php
    session_start();
    unset($_SESSION['ADMIN_UNAME']);
    header("location: adminlogin.php?logout=true");
 ?>

logout.php

<?php
  session_start();
  unset($_SESSION['SESS_MEMBER_ID']);
  header("location: login.php");
?>

答案 1 :(得分:0)

非常明显的是,如果一种类型的用户注销另一种,也会因为根据你的代码你正在销毁两次注销的整个会话

  session_start();
  unset($_SESSION['SESS_MEMBER_ID']);
  session_destroy();//don't use this instead think some other logic suitable for your system
  header("location: login.php");

答案 2 :(得分:0)

当您使用session_destroy();时,您将完全删除服务器了解您当前会话的所有内容。请注意,当前浏览器实例打开时,会话仍然存在,如果您销毁会话,则会销毁所有会话全局变量。

如果您只想注销管理员或普通用户,您只需更改会话变量即可反映出来。

答案 3 :(得分:0)

正如其他人已经指出的那样,问题是session_destroy()的召唤,因为这会破坏整个会话。

但是我想补充一点,你应该考虑在会话中使用多维数组用于不同的目的,或者更好的是,使用不同的会话,因为它们处于完全不同的区域(例如,管理会话应该绝对不能与普通用户会话共享,使用HTTPS cookie等。)。

答案 4 :(得分:0)

取消设置会话变量或在logout.php中将会话变量设为空

   adminlogout.php
    <?php
        session_start();
         $_SESSION['ADMIN_UNAME']='';
        header("location: adminlogin.php?logout=true");
     ?>




 logout.php
    <?php
    session_start();
       $_SESSION['SESS_MEMBER_ID']='';
        header("Location:login.php");

    ?>