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 相关文章推荐
PHP4 与 MySQL 数据库操作函数详解
Oct 09 PHP
PHP4.04简明安装
Oct 09 PHP
IIS6的PHP最佳配置方法
Mar 19 PHP
php 动态执行带有参数的类方法
Apr 10 PHP
PHP运行模式的深入理解
Jun 03 PHP
解析php函数method_exists()与is_callable()的区别
Jun 21 PHP
thinkphp使用phpmailer发送邮件的方法
Nov 24 PHP
php使用MySQL保存session会话的方法
Jun 18 PHP
PHP编程实现多维数组按照某个键值排序的方法小结【2种方法】
Apr 27 PHP
详解PHP使用Redis存储session时的一个Warning定位
Jul 05 PHP
php生出随机字符串
Jul 06 PHP
通过PHP设置BugFree获取邮箱通知
Apr 25 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中理解print EOT分界符和echo EOT的用法区别小结
2010/02/21 PHP
php中session退出登陆问题
2014/02/27 PHP
ThinkPHP后台首页index使用frameset时的注意事项分析
2014/08/22 PHP
PHP从尾到头打印链表实例讲解
2018/09/27 PHP
(function($){...})(jQuery)的意思
2010/07/22 Javascript
autoIMG 基于jquery的图片自适应插件代码
2011/03/12 Javascript
jQuery hover 延时器实现代码
2011/03/12 Javascript
图片onload事件触发问题解决方法
2011/07/31 Javascript
Jquery写一个鼠标拖动效果实现原理与代码
2012/12/24 Javascript
jquery数组之存放checkbox全选值示例代码
2013/12/20 Javascript
jQuery实现的经典滑动门效果
2015/09/22 Javascript
基于jQuery实现弹出可关闭遮罩提示框实例代码
2016/07/18 Javascript
AngularJS 过滤与排序详解及实例代码
2016/09/14 Javascript
JavaScript操作文件_动力节点Java学院整理
2017/06/30 Javascript
ES6中新增的Object.assign()方法详解
2017/09/22 Javascript
bootstrap-table.js扩展分页工具栏(增加跳转到xx页)功能
2017/12/28 Javascript
利用Console来Debug的10个高级技巧汇总
2018/03/26 Javascript
微信小程序实现图片上传功能
2018/05/28 Javascript
让你30分钟快速掌握vue3教程
2020/10/26 Javascript
vue+element table表格实现动态列筛选的示例代码
2021/01/14 Vue.js
Python复制目录结构脚本代码分享
2015/03/06 Python
python处理按钮消息的实例详解
2017/07/11 Python
python 制作自定义包并安装到系统目录的方法
2018/10/27 Python
浅谈pandas筛选出表中满足另一个表所有条件的数据方法
2019/02/08 Python
python3中类的继承以及self和super的区别详解
2019/06/26 Python
python 提取文件指定列的方法示例
2019/08/07 Python
Django 实现xadmin后台菜单改为中文
2019/11/15 Python
python图形用户接口实例详解
2019/12/16 Python
CentOS7下安装python3.6.8的教程详解
2020/01/03 Python
使用Django xadmin 实现修改时间选择器为不可输入状态
2020/03/30 Python
Pyinstaller打包Scrapy项目的实现步骤
2020/09/22 Python
加拿大在线旅游公司:Flighthub
2019/03/11 全球购物
光声世纪笔试题目
2012/08/25 面试题
师范院校学生自荐信范文
2013/12/27 职场文书
运动会拉拉队口号
2014/06/09 职场文书
2014年国庆节演讲稿
2014/09/19 职场文书