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应用提速面面观
Oct 09 PHP
服务器端解压缩zip的脚本
Dec 22 PHP
php xml留言板 xml存储数据的简单例子
Aug 24 PHP
PHP删除特定数组内容并且重建数组索引的方法.
Mar 25 PHP
Composer设置忽略版本匹配的方法
Apr 27 PHP
mysql desc(DESCRIBE)命令实例讲解
Sep 24 PHP
PHP中仿制 ecshop验证码实例
Jan 06 PHP
php PDO判断连接是否可用的实现方法
Apr 03 PHP
PHP实现的redis主从数据库状态检测功能示例
Jul 20 PHP
ThinkPHP3.2框架自定义配置和加载用法示例
Jun 14 PHP
laravel实现Auth认证,登录、注册后的页面回跳方法
Sep 30 PHP
PHP实现随机发扑克牌
Apr 22 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脚本
2006/11/26 PHP
Thinkphp中Create方法深入探究
2014/06/16 PHP
Codeigniter(CI)框架分页函数及相关知识
2014/11/03 PHP
初识PHP中的Swoole
2016/04/05 PHP
javascript attachEvent绑定多个事件执行顺序问题
2010/10/20 Javascript
jqGrid随窗口大小变化自适应大小的示例代码
2013/12/28 Javascript
jQuery实现checkbox全选的方法
2015/06/10 Javascript
JavaScript设计模式经典之命令模式
2016/02/24 Javascript
浅析如何利用JavaScript进行语音识别
2016/10/27 Javascript
基于JS实现9种不同的面包屑和分布式多步骤导航效果
2017/02/21 Javascript
轻松实现jQuery添加删除按钮Click事件
2017/03/13 Javascript
Vuex提升学习篇
2018/01/11 Javascript
nodejs使用redis作为缓存介质实现的封装缓存类示例
2018/02/07 NodeJs
layerUI下的绑定事件实例代码
2018/08/17 Javascript
python字符串的常用操作方法小结
2016/05/21 Python
Python使用ntplib库同步校准当地时间的方法
2016/07/02 Python
Python 将Matrix、Dict保存到文件的方法
2018/10/30 Python
Python中出现IndentationError:unindent does not match any outer indentation level错误的解决方法
2020/04/18 Python
对python实现合并两个排序链表的方法详解
2019/01/23 Python
详解Python可视化神器Yellowbrick使用
2019/11/11 Python
详解CSS3中字体平滑处理和抗锯齿渲染
2017/03/29 HTML / CSS
Html5画布_动力节点Java学院整理
2017/07/13 HTML / CSS
Stefania Mode英国:奢华设计师和时尚服装
2017/10/23 全球购物
三星加拿大官方网上商店:Samsung CA
2020/12/18 全球购物
医学专业大学生求职的自我评价
2013/11/27 职场文书
书法培训心得体会
2014/01/05 职场文书
致跳高运动员广播稿
2014/01/13 职场文书
优秀班集体获奖感言
2014/02/03 职场文书
自强之星事迹材料
2014/05/12 职场文书
搞笑车尾标语
2014/06/23 职场文书
个人典型事迹材料
2014/12/30 职场文书
开会通知
2015/04/20 职场文书
幼儿园开学家长寄语(2016春季)
2015/12/03 职场文书
世界无敌的ICOM IC-R9500宽频接收机
2022/03/25 无线电
Go语言测试库testify使用学习
2022/07/23 Golang
JS前端轻量fabric.js系列之画布初始化
2022/08/05 Javascript