有两个登录页面,如果一个页面被注销,另一个页面也会自动注销,如何更改?
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");
?>