codetc - 网站开发技术 首页 后端 PHP 查看内容

网站实现记住密码并自动登录功能

2014-12-10 00:34| 发布者: CODETC| 查看: 5720| 评论: 0

网站的会员登录功能经常会碰到要实现记住密码,下次自动登录,一周内免登陆,一个月内免登陆这种需求。这种记录密码并自动登录的功能一般都是通过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,执行其它登录成功操作
			}
		}
	}
}
文章来源 CODETC,欢迎分享,转载请注明地址: http://www.codetc.com/article-87-1.html

最新评论

 作为游客发表评论,请输入您的昵称

返回顶部