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 相关文章推荐
玩转图像函数库―常见图形操作
Sep 03 PHP
用PHP生成静态HTML速度快类库
Mar 18 PHP
PHP 批量删除数据的方法分析
Oct 30 PHP
基于PHP生成静态页的实现方法
May 10 PHP
php define的第二个参数使用方法
Nov 04 PHP
thinkphp循环结构用法实例
Nov 24 PHP
Sublime里直接运行PHP配置方法
Nov 28 PHP
php中header跳转使用include包含解决参数丢失问题
May 08 PHP
php中get_defined_constants函数用法实例分析
May 12 PHP
ThinkPHP中where()使用方法详解
Apr 19 PHP
yii2使用gridView实现下拉列表筛选数据
Apr 10 PHP
PHP面向对象中new self()与 new static()的区别浅析
Aug 17 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应用技巧
2008/03/27 PHP
destoon实现调用自增数字从1开始的方法
2014/08/21 PHP
PHP对文件夹递归执行chmod命令的方法
2015/06/19 PHP
PHP+Jquery与ajax相结合实现下拉淡出瀑布流效果【无需插件】
2016/05/06 PHP
php实现产品加入购物车功能(1)
2020/07/23 PHP
jQuery 判断页面元素是否存在的代码
2009/08/14 Javascript
window.name代替cookie的实现代码
2010/11/28 Javascript
jquery数组过滤筛选方法grep()简介
2014/06/06 Javascript
jquery操作HTML5 的data-*的用法实例分享
2014/08/17 Javascript
jQuery CSS()方法改变现有的CSS样式
2014/08/20 Javascript
JS+CSS实现实用的单击输入框弹出选择框的方法
2015/02/28 Javascript
JavaScript仿微博发布信息案例
2016/11/16 Javascript
实现点击下箭头变上箭头来回切换的两种方法【推荐】
2016/12/14 Javascript
JS实现的倒计时恢复按钮点击功能【可用于协议阅读倒计时】
2018/04/19 Javascript
Angular6笔记之封装http的示例代码
2018/07/27 Javascript
JavaScript实现的联动菜单特效示例
2019/07/08 Javascript
浅谈bootstrap layer.open中end的使用方法
2019/09/12 Javascript
vue.js的状态管理vuex中store的使用详解
2019/11/08 Javascript
python快速排序代码实例
2013/11/21 Python
Python编写检测数据库SA用户的方法
2014/07/11 Python
Python素数检测的方法
2015/05/11 Python
python将txt文件读入为np.array的方法
2018/10/30 Python
dataframe 按条件替换某一列中的值方法
2019/01/29 Python
python画图把时间作为横坐标的方法
2019/07/07 Python
PyCharm中如何直接使用Anaconda已安装的库
2020/05/28 Python
python datetime时间格式的相互转换问题
2020/06/11 Python
用gpu训练好的神经网络,用tensorflow-cpu跑出错的原因及解决方案
2021/03/03 Python
CSS3中的Transition过度与Animation动画属性使用要点
2016/05/20 HTML / CSS
Nike德国官网:Nike.com (DE)
2018/11/13 全球购物
环境工程求职简历的自我评价范文
2013/10/24 职场文书
中专毕业生自荐信范文
2013/11/28 职场文书
网吧消防安全制度
2014/01/28 职场文书
店面销售职位的职责
2014/03/09 职场文书
群众路线剖析材料范文
2014/10/09 职场文书
学校党的群众路线教育实践活动整改措施
2014/10/25 职场文书
建筑工程催款函
2015/06/24 职场文书