Php退出问题

时间:2012-11-12 17:58:58

标签: php

我有一个管理面板和用户面板。两者都有一个Logout链接。当我登录管理面板时,我同时以用户身份登录。所以两人都有一个会议。

但是当我从管理面板注销时,它也会从用户面板中记录下来。为什么要从用户注销。我做了单独的登录会话。

管理员和用户的登录会话:

$_SESSION['admin_u'] = $admin_uname;
$_SESSION['admin_pass'] = $admin_pass2; 

$_SESSION['uname'] = $uname;
$_SESSION['pass'] = $pass;  

管理员退出代码:

<?php
if(isset($_SESSION['admin_u']) && isset($_SESSION['admin_pass'])) {
    session_unset($_SESSION['admin_u']);
    session_unset($_SESSION['admin_pass']);
    session_destroy();
    header( "Location:../index.php" );
    exit();     
} else {
    header("Location:../membersignin.php");
    exit();
}
?>

用户退出代码:

<?php
if(isset($_SESSION['uname']) && isset($_SESSION['pass'])) {
    session_unset($_SESSION['uname']);
    session_unset($_SESSION['pass']);
    session_destroy();
    header( "Location:../../index.php" );
    exit();     
} else {
    header("Location:../../membersignin.php");
}
?>  

我的代码有什么问题吗?

2 个答案:

答案 0 :(得分:3)

<强> session_destroy()

  

session_destroy - 销毁注册到会话的所有数据

这被调用意味着会话,用户和管理员都被销毁。你应该只是取消设置你不想要的会话变​​量而不是破坏会话,如果你不想从两者中注销的话。


此外,您错误地使用了 session_unset() session_unset()函数释放当前注册的所有会话变量。请改用简单的 unset()

答案 1 :(得分:1)

session_unset清除所有会话...而不仅仅是一个变量..使用

unset($_SESSION['admin'])

更多信息:

http://php.net/manual/en/function.session-unset.php