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 相关文章推荐
也谈截取首页新闻 - 范例
Oct 09 PHP
黑夜路人出的几道php笔试题
Aug 04 PHP
php生成excel文件的简单方法
Feb 08 PHP
PHP 使用redis简单示例分享
Mar 05 PHP
PHP实现图片自动清理的方法
Jul 08 PHP
Laravel与CI框架中截取字符串函数
May 08 PHP
Yii 2.0在Grid中格式化时间方法示例
Jun 06 PHP
通过源码解析Laravel的依赖注入
Jan 22 PHP
PHP实现数组转JSon和JSon转数组的方法示例
Jun 14 PHP
记录Yii2框架开发微信公众号遇到的问题及解决方法
Jul 20 PHP
PHP实现带进度条的Ajax文件上传功能示例
Jul 02 PHP
PHP容器类的两种实现方式示例
Jul 24 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
基于mysql的论坛(6)
2006/10/09 PHP
php采用curl访问域名返回405 method not allowed提示的解决方法
2014/06/26 PHP
PHP中创建图像并绘制文字的例子
2014/11/19 PHP
编写PHP脚本过滤用户上传的图片
2015/07/03 PHP
php实现的生成迷宫与迷宫寻址算法完整实例
2017/11/06 PHP
JavaScript与Image加载事件(onload)、加载状态(complete)
2011/02/14 Javascript
jQuery调用AJAX时Get和post公用的乱码解决方法实例说明
2013/06/04 Javascript
基于jquery扩展漂亮的下拉框可以二次修改
2013/11/19 Javascript
js获取url中指定参数值的示例代码
2013/12/14 Javascript
jquery form 隐藏的input 选择
2014/04/29 Javascript
JavaScript中join()方法的使用简介
2015/06/09 Javascript
jQuery取得iframe中元素的常用方法详解
2016/01/14 Javascript
JS 对象(Object)和字符串(String)互转方法
2016/05/20 Javascript
学习使用bootstrap的modal和carousel
2016/12/09 Javascript
微信小程序--组件(swiper)详细介绍
2017/06/13 Javascript
使用store来优化React组件的方法
2017/10/23 Javascript
利用vue开发一个所谓的数独方法实例
2017/12/21 Javascript
原生js实现二级联动菜单
2019/11/27 Javascript
js实现列表按字母排序
2020/08/11 Javascript
[05:00]第二届DOTA2亚洲邀请赛主赛事第三天比赛集锦.mp4
2017/04/04 DOTA
[10:42]Team Liquid Vs Newbee
2018/06/07 DOTA
[01:33:14]LGD vs VP Supermajor 败者组决赛 BO3 第二场 6.10
2018/07/04 DOTA
基于python list对象中嵌套元组使用sort时的排序方法
2018/04/18 Python
Pycharm新手教程(只需要看这篇就够了)
2019/06/18 Python
python跳出双层for循环的解决方法
2019/06/24 Python
python基于celery实现异步任务周期任务定时任务
2019/12/30 Python
Python3.7在anaconda里面使用IDLE编译器的步骤详解
2020/04/29 Python
如何使用python记录室友的抖音在线时间
2020/06/29 Python
python requests库的使用
2021/01/06 Python
KIKO美国官网:意大利的平价彩妆品牌
2017/05/16 全球购物
美国知名眼镜网站:Target Optical
2020/04/04 全球购物
大学生毕业自荐信
2013/10/10 职场文书
《火烧云》教学反思
2014/04/12 职场文书
应届毕业生求职信范文
2015/03/19 职场文书
活着观后感
2015/06/03 职场文书
致运动员赞词
2015/07/22 职场文书