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 相关文章推荐
简单的过滤字符串中的HTML标记
Dec 25 PHP
set_include_path在win和linux下的区别
Jan 10 PHP
PHP form 表单传参明细研究
Jul 17 PHP
探讨php define()函数及defined()函数使用详解
Jun 09 PHP
ThinkPHP多语言支持与多模板支持概述
Aug 22 PHP
PHP产生不重复随机数的5个方法总结
Nov 12 PHP
PHP获取远程图片并保存到本地的方法
May 12 PHP
php单元测试phpunit入门实例教程
Nov 17 PHP
PHP基于curl模拟post提交json数据示例
Jun 22 PHP
laravel5.1框架基础之Blade模板继承简单使用方法分析
Sep 05 PHP
smarty模板的使用方法实例分析
Sep 18 PHP
浅谈php常用的7大框架的优缺点
Jul 20 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
业余方法DIY电子管FM收音机
2021/03/02 无线电
用函数读出数据表内容放入二维数组
2006/10/09 PHP
php使用ZipArchive提示Fatal error: Class ZipArchive not found in的解决方法
2014/11/04 PHP
php实现计算百度地图坐标之间距离的方法
2016/05/05 PHP
PHP设计模式之命令模式示例详解
2020/12/20 PHP
神奇的代码 通杀各种网站-可随意修改复制页面内容
2008/07/17 Javascript
jQuery 使用手册(三)
2009/09/23 Javascript
jquery 屏蔽一个区域内的所有元素,禁止输入
2009/10/22 Javascript
使用JS画图之点、线、面
2015/01/12 Javascript
easyUI combobox实现联动效果
2017/01/17 Javascript
Vue.js事件处理器与表单控件绑定详解
2017/03/20 Javascript
React服务端渲染(总结)
2017/07/01 Javascript
bootstrap table sum总数量统计实现方法
2017/10/29 Javascript
JS实现将链接生成二维码并转为图片的方法
2018/03/17 Javascript
微信小程序时间戳转日期的详解
2019/04/30 Javascript
layui 根据后台数据动态创建下拉框并同时默认选中的实例
2019/09/02 Javascript
python发送伪造的arp请求
2014/01/09 Python
深入解析Python中的WSGI接口
2015/05/11 Python
在Python的Django框架中更新数据库数据的方法
2015/07/17 Python
Django权限机制实现代码详解
2018/02/05 Python
python3.4实现邮件发送功能
2018/05/28 Python
Python操作MySQL数据库的方法
2018/06/20 Python
pytorch对可变长度序列的处理方法详解
2018/12/08 Python
给大家整理了19个pythonic的编程习惯(小结)
2019/09/25 Python
Django 实现外键去除自动添加的后缀‘_id’
2019/11/15 Python
pygame用blit()实现动画效果的示例代码
2020/05/28 Python
Python的信号库Blinker用法详解
2020/12/31 Python
python-jwt用户认证食用教学的实现方法
2021/01/19 Python
ALDI奥乐齐官方海外旗舰店:德国百年超市
2017/12/27 全球购物
演讲稿开场白
2014/01/13 职场文书
初二物理教学反思
2014/01/29 职场文书
法人代表授权委托书
2014/04/08 职场文书
低碳生活倡议书
2014/04/14 职场文书
村庄环境整治方案
2014/05/15 职场文书
大学生个人学年总结
2015/02/15 职场文书
在SQL Server中使用 Try Catch 处理异常的示例详解
2022/07/15 SQL Server