网站的会员登录功能经常会碰到要实现记住密码,下次自动登录,一周内免登陆,一个月内免登陆这种需求。这种记录密码并自动登录的功能一般都是通过cookie来实现的。本篇文章将简单说一下如何使用php实现该需求的。当然实现该需求的方法有N多种。
整个过程就是用户在登录的时候,如果选择了记住密码或者一周内免登陆等这些选项的时候,则在用户成功执行登陆操作之后,存储一个实现自动登录的cookie数据到客户端浏览器中,作为下次自动登录时验证用。验证通过则自动登录,否则需要输入用户名,密码进行登录。
具体示例代码如下(以下代码仅供参考):
$username = trim($_POST['username']);
$password = md5(trim($_POST['password']));
$remember = $_POST['remember'];//是否自动登录标示
$err_msg='';
if($username==''||$password==''){
$err_msg="用户名和密码都不能为空";
}else{
$row=getUserInfo($username,$password); //从数据库匹配用户名和密码
if(empty($row)){
$err_msg="用户名或密码不正确";
}else{
$_SESSION['user_info']=$row;
if(!empty($remember)){//如果用户选择了,记录登录状态就把用户名和加了密的密码放到cookie里面,该处可设置cookie的有效时间
setcookie("username",$username,time()+3600*24*365);
setcookie("password",$password,time()+3600*24*365);
}
//执行登录成功后的页面跳转操作
}
}
另外在访问网站的每个页面时,都要先进行一遍如下函数的检查。
//检查用户是否登录
function checklogin(){
if(empty($_SESSION['user_info'])){//检查一下session是不是为空,判断用户是否已登录
if(empty($_COOKIE['username'])||empty($_COOKIE['password'])){//如果session为空,并且用户没有选择记录登录状
header("location:login.php");//转到登录页面
}else{//用户选择了记住登录状态
$user=getUserInfo($_COOKIE['username'],$_COOKIE['password']);//去取用户的个人资料
if(empty($user)){//用户名密码不对没到取到信息,转到登录页面
header("location:login.php");
}else{
$_SESSION['user_info']=$user;//登录成功,保存session,执行其它登录成功操作
}
}
}
}