我仍然是session
中的新人
在使用之前擦除$_SESSION
是否合适?
示例:
$_SESSION = array();
$_SESSION['id'] = 1;
$_SESSION['name'] = 'Someone';
我问你们的意见。
因为我在[{1}}。
在我尴尬的逻辑中,
也许我会忘记session
来自logout
和admin session
到login
因此,来自管理员的某些member session
值仍然可以在$_SESSION
附加:
1.我是$_SESSION array
而不是admin user
来自logout
2.现在我从admin page
转到admin page
我该怎么办?
将member login page
踢到admin
,因为他不是会员?
答案 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