我是PHP的新手,并决定在我的网站上玩cookie。我在我的登录系统中添加了cookie,使用户在登录后可以登录1年。这样可以正常工作。
但是,我不知道如何让Cookie记住哪些用户在数据库中设置为管理员状态。有一个错误,所以登录的管理员一段时间后仍然无法查看管理区域,即使他们仍然登录。任何想法可能是什么?
登录代码:
$password=md5($_REQUEST['PASSWORD']);
$UserName=mysql_escape_string($_REQUEST['USERNAME']);
$hour = TIME() + 60*60*24*30;
setcookie("USERNAME_COOKIE", $UserName, $hour);
setcookie("PASSWORD_COOKIE", $password, $hour);
$query = $mario->DB->Query("SELECT * FROM `" . DBNAME . "`.`users` WHERE `username` = '" . addslashes($_REQUEST['username']) . "' && `password` = '" . md5($_REQUEST['password']) . "'");
if($mario->DB->NumRows($query) > 0) {
// Success we have a user!
$results = $mario->DB->Fetch($query);
$_SESSION['accountLoggedIn'] = true;
$_SESSION['username'] = $results['username'];
$_SESSION['userID'] = $results['userID'];
setcookie("marioruns_loggedin", true, time()+3600*24*364,"/" ); /* expire in 1 year */
setcookie("marioruns_username", $results['username'], time()+3600*24*364,"/" ); /* expire in 1 year */
setcookie("marioruns_userID", $results['userID'], time()+3600*24*364,"/" ); /* expire in 1 year */
配置代码:
if(isset($_COOKIE["marioruns_loggedin"]))$_SESSION['accountLoggedIn'] = true;
if(isset($_COOKIE["marioruns_username"]))$_SESSION['username'] = $_COOKIE["marioruns_username"];
if(isset($_COOKIE["marioruns_userID"]))$_SESSION['userID'] = $_COOKIE["marioruns_userID"];
在session_start();已经包括了 管理员状态不会存储在代码中的任何位置,只需在用户加载配置文件页面(管理区域所在位置)时从数据库中调用
编辑:
我觉得这可能与在个人资料页面上显示管理区域的代码有关,这行代码:
<?php if(($_SESSION['isStaff']) || ($_SESSION['isAdmin'])) {?>
--- Admin Area Code ---
也许会话已经过期了?不确定。