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


How to logout a page without affecting other pages?

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

adminlogout.php

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

注销.php

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

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

adminlogout.php

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

注销.php

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

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

如果你只想注销管理员或普通用户,你只需要更改一个会话变量来反映这一点。

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

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

在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");
    ?>