Home >Backend Development >PHP Tutorial >php中实现记住密码下次自动登录的例子_PHP

php中实现记住密码下次自动登录的例子_PHP

WBOY
WBOYOriginal
2016-05-31 19:28:16819browse

做网站的时候经常会碰到要实现记住密码,下次自动登录,一周内免登陆,一个月内免登陆这种需求。这种功能一般都是通过cookie来实现的。本篇文章将简单说一下如何使用php实现该需求的。当然实现该需求的方法有N多种。

整个过程就是用户在登陆的时候,如果选择了记住密码或者一周内免登陆等这个选项的时候,则在用户成功登陆操作完成之后,存储一个实现自动登录的cookie的数据到数据库的用户表里面,作为下次自动登录时验证用。验证通过则自动登录,否则需要输入用户名,密码进行登录。保存的这个cookie值则可以取一个随机码。

具体示例代码如下:

代码如下:


$username=trim($_POST['username']);
$password=md5(trim($_POST['password']));
$ref_url=$_GET['req_url'];
$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里面
   setcookie("username",$username,time()+3600*24*365);
   setcookie("password",$password,time()+3600*24*365);
  }
  if(strpos($ref_url,"login.php")===false){
   header("location:".$ref_url);
  }else{
   header("location:main_user.php");
  }
 }
}

另外在访问网站的每个页面时,都要先进行一遍如下函数的检查。

代码如下:


//检查用户是否登录
function checklogin(){
 if(empty($_SESSION['user_info'])){//检查一下session是不是为空
  if(empty($_COOKIE['username'])||empty($_COOKIE['password'])){//如果session为空,并且用户没有选择记录登录状
   header("location:login.php?req_url=".$_SERVER['REQUEST_URI']);//转到登录页面,记录请求的url,登录后跳转过去,用户体验好。
  }else{//用户选择了记住登录状态
   $user=getUserInfo($_COOKIE['username'],$_COOKIE['password']);//去取用户的个人资料
  if(empty($user)){//用户名密码不对没到取到信息,转到登录页面
   header("location:login.php?req_url=".$_SERVER['REQUEST_URI']);
  }else{
   $_SESSION['user_info']=$user;//用户名和密码对了,把用户的个人资料放到session里面
  }
  }
 }
}

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn