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 相关文章推荐
ADODB类使用
Nov 25 PHP
php实现首页链接查询 友情链接检查的代码
Jan 05 PHP
PHP set_time_limit(0)长连接的实现分析
Mar 02 PHP
php验证手机号码(支持归属地查询及编码为UTF8)
Feb 01 PHP
判断php数组是否为索引数组的实现方法
Jun 13 PHP
php找出指定范围内回文数且平方根也是回文数的方法
Mar 23 PHP
php中使用base HTTP验证的方法
Apr 20 PHP
PHP设计模式之迭代器模式
Jun 17 PHP
PHP面向对象自动加载机制原理与用法分析
Oct 14 PHP
CodeIgniter开发实现支付宝接口调用的方法示例
Nov 14 PHP
CI框架(CodeIgniter)实现的导入、导出数据操作示例
May 24 PHP
tp5.1 实现setInc字段自动加1
Oct 18 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
某大型网络公司应聘时的笔试题目附答案
2008/03/27 PHP
关于图片验证码设计的思考
2007/01/29 Javascript
在jquery中combobox多选的不兼容问题总结
2013/12/24 Javascript
JavaScript学习笔记之JS事件对象
2015/01/22 Javascript
JQuery选中checkbox方法代码实例(全选、反选、全不选)
2015/04/27 Javascript
理解javascript异步编程
2016/01/27 Javascript
Vue.JS入门教程之自定义指令
2016/12/08 Javascript
Html5+jQuery+CSS制作相册小记录
2016/12/30 Javascript
js实现移动端微信页面禁止字体放大
2017/02/16 Javascript
详解webpack 配合babel 将es6转成es5 超简单实例
2017/05/02 Javascript
jQuery实现的页面遮罩层功能示例【测试可用】
2017/10/14 jQuery
微信小程序实现点击文字页面跳转功能【附源码下载】
2017/12/12 Javascript
jQuery实现点击旋转,再点击恢复初始状态动画效果示例
2018/12/11 jQuery
vue+springboot图片上传和显示的示例代码
2020/02/14 Javascript
使用js原生实现年份轮播选择效果实例
2021/01/12 Javascript
[55:04]海涛DOTA2死魂复燃6.82版本介绍
2014/09/28 DOTA
[45:14]Optic vs VP 2018国际邀请赛淘汰赛BO3 第二场 8.24
2018/08/25 DOTA
[43:41]OG vs Newbee 2019国际邀请赛淘汰赛 胜者组 BO3 第一场 8.21.mp4
2020/07/19 DOTA
Python脚本判断 Linux 是否运行在虚拟机上
2015/04/25 Python
pandas中去除指定字符的实例
2018/05/18 Python
解决csv.writer写入文件有多余的空行问题
2018/07/06 Python
python实现提取COCO,VOC数据集中特定的类
2020/03/10 Python
python识别验证码的思路及解决方案
2020/09/13 Python
解决img标签上下出现间隙的方法
2016/12/14 HTML / CSS
html5教你做炫酷的碎片式图片切换 (canvas)
2017/07/28 HTML / CSS
荷兰优雅女装网上商店:Heine
2016/11/14 全球购物
寻找完美的房车租赁:RVShare
2019/02/23 全球购物
美赞臣新加坡官方旗舰店:Enfagrow新加坡
2019/05/15 全球购物
酒店管理专业学生求职信
2013/09/27 职场文书
创业计划实施的7大步骤
2014/02/05 职场文书
《高尔基和他的儿子》教学反思
2014/04/09 职场文书
社区服务活动总结
2014/05/07 职场文书
车间安全生产标语
2014/06/06 职场文书
遗嘱继承权公证书
2015/01/26 职场文书
老人院义工活动感想
2015/08/07 职场文书
Python中Matplotlib的点、线形状、颜色以及绘制散点图
2022/04/07 Python