2007年6月16日星期六

在登陆界面实现Remember me功能

登陆form中有:
 Remember me next time
设置session之后需要设置cookie。cookie就是临时存储用户信息的文件,保存在用户机器上。一下代码位于登陆中验证用户通过后:
   /* Username and password correct, register session variables */
$user = stripslashes($_POST['user']);
$_SESSION['username'] = $user;
$_SESSION['password'] = $pass;

/**
* the user has requested that we remember that he's logged in, so
* we set two cookies. One to hold his username,
* and one to hold his password. We set them both to
* expire in 100 days. Now, next time he comes to our site, we will
* log him in automatically.
*/
if(isset($_POST['remember'])){
setcookie("cookname", $_SESSION['username'], time()+60*60*24*100, "/");
setcookie("cookpass", $_SESSION['password'], time()+60*60*24*100, "/");
}
检查是否设置cookie:
function checkLogin(){
/* Check if user has been remembered */
if(isset($_COOKIE['cookname']) && isset($_COOKIE['cookpass'])){
$_SESSION['username'] = $_COOKIE['cookname'];
$_SESSION['password'] = $_COOKIE['cookpass'];
}

/* Username and password have been set */
if(isset($_SESSION['username']) && isset($_SESSION['password'])){
/* Confirm that username and password are valid */
if(confirmUser($_SESSION['username'], $_SESSION['password']) != 0){
/* Variables are incorrect, user not logged in */
unset($_SESSION['username']);
unset($_SESSION['password']);
return false;
}
return true;
}
/* User not logged in */
else{
return false;
}
}
在logout的时候
if(isset($_COOKIE['cookname']) && isset($_COOKIE['cookpass'])){
setcookie("cookname", "", time()-60*60*24*100, "/");
setcookie("cookpass", "", time()-60*60*24*100, "/");
}
参考:http://evolt.org/article/comment/17/60265/index.html

没有评论: