在使用之前擦除$ _SESSION是否合适?

时间:2014-07-25 02:34:55

标签: php session

我仍然是session中的新人 在使用之前擦除$_SESSION是否合适?

示例:

$_SESSION         = array();
$_SESSION['id']   = 1;
$_SESSION['name'] = 'Someone';

我问你们的意见。
因为我在[{1}}。

中没有多少经验

在我尴尬的逻辑中, 也许我会忘记session来自logoutadmin sessionlogin

因此,来自管理员的某些member session值仍然可以在$_SESSION


附加:
1.我是$_SESSION array而不是admin user来自logout 2.现在我从admin page转到admin page

我该怎么办?
member login page踢到admin,因为他不是会员?

1 个答案:

答案 0 :(得分:4)

不。事实上,它非常糟糕,您的示例代码将使您的会话无效。

当您致电session_start()时,您将获得一个空的$_SESSION,或者您在之前的页面加载中将您保存的数据恢复为$_SESSION。有关会话的更多信息,请查看PHP文档:

http://php.net/manual/en/book.session.php

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


关于登录和注销:您的注销过程必须销毁识别用户的任何会话数据(可能是他们的ID)。通常,这是通过使用unset完成的,即unset($_SESSION['user_id'])

我无法想象任何其他方式来退出用户,也许如果您提供了更多信息,我可以为您提供更好的答案。


关于您的添加,您的身份验证系统可能会使用一些工作。当您已经登录时,您应该无法访问登录页面(即使是管理员,因为它只是具有更高权限的另一个用户,对吧?)。如果您在登录后手动输入登录URL,则应将其重定向到主页。

这是关于这个主题的精彩写作,我应该做一些研究!谢谢@HamZa

The definitive guide to form-based website authentication

这是我的超级基本伪代码身份验证过程:

Does current page require authentication
    Yes:
        Is the user logged in?
            Yes:
                Does the user have the correct privilages to view the page?
                    Yes:
                        AUTHENTICATED! Show page
                    No:
                        Print a message that says something like, "You're in the wrong place amigo"
            No:
                Redirect to login
    No:
        Show the page