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


Posted in PHP onNovember 06, 2014

做网站的时候经常会碰到要实现记住密码,下次自动登录,一周内免登陆,一个月内免登陆这种需求。这种功能一般都是通过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里面

  }

  }

 }

}
PHP 相关文章推荐
PHP Document 代码注释规范
Apr 13 PHP
PHP-Java-Bridge使用笔记
Sep 22 PHP
ThinkPHP框架实现数据增删改
May 07 PHP
Laravel中的Auth模块详解
Aug 17 PHP
phpStudy配置多站点多域名方法及遇到的403错误解决方法
Oct 19 PHP
thinkPHP5实现的查询数据库并返回json数据实例
Oct 23 PHP
详解PHP中mb_strpos的使用
Feb 04 PHP
Laravel5.4框架中视图共享数据的方法详解
Sep 05 PHP
使用tp框架和SQL语句查询数据表中的某字段包含某值
Oct 18 PHP
TP5框架页面跳转样式操作示例
Apr 05 PHP
PHP 范围解析操作符(::)用法分析【访问静态成员和类常量】
Apr 14 PHP
php实现JWT验证的实例教程
Nov 26 PHP
php网站被挂木马后的修复方法总结
Nov 06 #PHP
调试PHP程序的多种方法介绍
Nov 06 #PHP
php实现singleton()单例模式实例
Nov 06 #PHP
php使用session二维数组实例
Nov 06 #PHP
php函数serialize()与unserialize()用法实例
Nov 06 #PHP
php实现webservice实例
Nov 06 #PHP
php的dl函数用法实例
Nov 06 #PHP
You might like
php,不用COM,生成excel文件
2006/10/09 PHP
也谈php网站在线人数统计
2008/04/09 PHP
PHP读取配置文件类实例(可读取ini,yaml,xml等)
2015/07/28 PHP
10个值得深思的PHP面试题
2016/11/14 PHP
Laravel如何使用Redis共享Session
2018/02/23 PHP
学习ExtJS Column布局
2009/10/08 Javascript
Extjs中通过Tree加载右侧TabPanel具体实现
2013/05/05 Javascript
利用div+jquery自定义滚动条样式的2种方法
2013/07/18 Javascript
jQuery元素的隐藏与显示实例
2015/01/20 Javascript
javascript获得当前的信息的一些常用命令
2015/02/25 Javascript
JavaScript通过select动态更换图片的方法
2015/03/23 Javascript
简介JavaScript中getUTCMonth()方法的使用
2015/06/10 Javascript
浅析函数声明和函数表达式——函数声明的声明提前
2016/05/03 Javascript
jQueryUI中的datepicker使用方法详解
2016/05/25 Javascript
使用JS实现图片展示瀑布流效果的实例代码
2016/09/12 Javascript
jQuery实现点击某个div打开层,点击其他div关闭层实例分析(阻止冒泡)
2016/11/18 Javascript
jquery ajaxfileupload异步上传插件使用详解
2017/02/08 Javascript
js上下视差滚动简单实现代码
2017/03/07 Javascript
jQuery UI实现动画效果代码分享
2018/08/19 jQuery
JavaScript实现多态和继承的封装操作示例
2018/08/20 Javascript
npm 常用命令详解(小结)
2019/01/17 Javascript
vuex的使用和简易实现
2021/01/07 Vue.js
python多进程和多线程究竟谁更快(详解)
2017/05/29 Python
在python中将字符串转为json对象并取值的方法
2018/12/31 Python
Python 进程之间共享数据(全局变量)的方法
2019/07/16 Python
pycharm显示远程图片的实现
2019/11/04 Python
python/Matplotlib绘制复变函数图像教程
2019/11/21 Python
Python高级特性——详解多维数组切片(Slice)
2019/11/26 Python
Opencv求取连通区域重心实例
2020/06/04 Python
JSF面试题:Jsf中导航的标签是什么
2013/04/20 面试题
装潢设计实习自我鉴定
2013/09/19 职场文书
美术兴趣小组活动总结
2014/07/07 职场文书
Nginx服务器如何设置url链接
2021/03/31 Servers
教你使用vscode 搭建react-native开发环境
2021/07/07 Javascript
PostgreSQL聚合函数介绍以及分组和排序
2022/04/12 PostgreSQL
vue实现简易音乐播放器
2022/08/14 Vue.js