我使用PHP Session变量来让用户登录并编辑他们的网站。当他们注销时,我会调用session_destroy();函数来终止会话。
在登录屏幕上,我可以选择“记住这台计算机”,而不是使用$_SESSION[]变量,而是像这样设置一个cookie:
setcookie("admin", true, $expire);
该Cookie已设置,但是当我注销时,Cookie将取消设置。任何方式来防止这种情况?我希望会议结束,但我希望网站也记住计算机。
感谢您的时间。
编辑:这里是我用来启动和销毁会话的两种方法(我调用的会话方法在另一个类上)
public function loginCheck() {
//check if the remember me is set
if (isset($_POST['remember'])) {
$expire = time() + 60 * 60 * 24 * 30;
setcookie("admin", true, $expire);
}
else{
setcookie("admin", "", time()-3600);
}
$sth = $this->db->prepare("SELECT uid FROM philllwareusers WHERE
usr = :login AND pasw = :password");
$sth->execute(array(
':login' => $_POST['user'],
':password' => $_POST['pswrd']
));
$data = $sth->fetch();
$count = $sth->rowCount();
if ($count > 0) {
//check if user has permision to edit this website
$sth = $this->db->prepare("SELECT web_id FROM website_spine WHERE
admin_id = :uid ");
$sth->execute(array(
':uid' => $data['uid']
));
$datas = $sth->fetch();
$counts = $sth->rowCount();
if ($counts > 0) {
if ($datas['web_id'] == WEB_ID) {
Session::init();
Session::set('uid', $data['uid']);
Session::set('loggedIn', true);
header('location: ../index');
} else {
header('location: ../Adminlogisn');
}
}
// login
} else {
header('location: ../Adminlogin');
}
}
function logout() {
Session::init();
Session::destroy();
header('location: '.URL.'/Adminlogin');
}这就是管理员登录的样子(将检查cookie是否应该设置的部分,并应保持设置或销毁它)。
if(!isset($_COOKIE['admin']) || $_COOKIE['admin'] == ''){?>
Remember this computer as an admin computer
}
else{
?>
Un-check to forget this computer as an admin computer.
}
?>