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 相关文章推荐
PHP5新特性: 更加面向对象化的PHP
Nov 18 PHP
PHP MemCached高级缓存配置图文教程
Aug 05 PHP
关于crontab的使用详解
Jun 24 PHP
ThinkPHP3.1新特性之多层MVC的支持
Jun 19 PHP
PHP中__FILE__、dirname与basename用法实例分析
Dec 01 PHP
php实现json编码的方法
Jul 30 PHP
十大使用PHP框架的理由
Sep 26 PHP
PHP闭包函数传参及使用外部变量的方法
Mar 15 PHP
详解PHP处理字符串类似indexof的方法函数
Jun 11 PHP
php7安装mongoDB扩展的方法分析
Aug 02 PHP
php使用环形链表解决约瑟夫问题完整示例
Aug 07 PHP
php的优点总结 php有哪些优点
Jul 19 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采集时被封ip的解决方法
2010/08/29 PHP
php牛逼的面试题分享
2013/01/18 PHP
PHP添加Xdebug扩展的方法
2014/02/12 PHP
PHP的中使用非缓冲模式查询数据库的方法
2017/02/05 PHP
php从数据库中读取特定的行(实例)
2017/06/02 PHP
PHP基于GD库实现的生成图片缩略图函数示例
2017/07/05 PHP
PHP进阶学习之反射基本概念与用法分析
2019/06/18 PHP
PHP pthreads v3下同步处理synchronized用法示例
2020/02/21 PHP
使用JavaScript检测Firefox浏览器是否启用了Firebug的代码
2010/12/28 Javascript
基于jquery实现的鼠标拖拽元素复制并写入效果
2011/08/23 Javascript
js indexOf()定义和用法
2012/10/21 Javascript
JS上传组件FileUpload自定义模板的使用方法
2016/05/10 Javascript
如何用JavaScript实现动态修改CSS样式表
2016/05/20 Javascript
使用jQuery5分钟快速搞定双色表格的简单实例
2016/08/08 Javascript
Nodejs中解决cluster模块的多进程如何共享数据问题
2016/11/10 NodeJs
jQuery实现鼠标响应式透明度渐变动画效果示例
2018/02/13 jQuery
微信小程序停止其他视频播放当前视频的实例代码
2019/12/25 Javascript
Javascript如何实现双指控制图片功能
2020/02/25 Javascript
Python日期操作学习笔记
2008/10/07 Python
python检测某个变量是否有定义的方法
2015/05/20 Python
利用matplotlib+numpy绘制多种绘图的方法实例
2017/05/03 Python
python 3.0 模拟用户登录功能并实现三次错误锁定
2017/11/01 Python
详解python实现数据归一化处理的方式:(0,1)标准化
2019/07/17 Python
python 利用pywifi模块实现连接网络破解wifi密码实时监控网络
2019/09/16 Python
CSS3制作圆角图片和椭圆形图片
2016/07/08 HTML / CSS
利用CSS3实现的文字定时向上滚动
2016/08/29 HTML / CSS
借助HTML5 Canvas来绘制三角形和矩形等多边形的方法
2016/03/14 HTML / CSS
如何在Canvas中添加事件的方法示例
2019/05/21 HTML / CSS
为什么使用接口?
2014/08/13 面试题
乡镇信息公开实施方案
2014/03/23 职场文书
经营目标管理责任书
2014/07/25 职场文书
初中国旗下的演讲稿
2014/08/28 职场文书
唐山大地震的观后感
2015/06/05 职场文书
通知怎么写?
2019/04/17 职场文书
MySQL中的引号和反引号的区别与用法详解
2021/10/24 MySQL
2021好看的国漫排行榜前十名 《完美世界》上榜,《元龙》排名第一
2022/03/18 国漫