php中实现记住密码自动登录的代码


Posted in PHP onMarch 02, 2011

php实现记住密码自动登录方法不止一个,下面出现有二个emptyempty,其实是一个,那是因为代码高亮有bug。希望对大家有帮助。

一,用户登录的check

//检查用户是否登录 
function checklogin(){ 
if(emptyempty($_SESSION['user_info'])){ //检查一下session是不是为空 
if(emptyempty($_COOKIE['username']) || emptyempty($_COOKIE['password'])){ //如果session为空,并且用户没有选择记录登录状 
header(”location:login.php?req_url=”.$_SERVER['REQUEST_URI']); //转到登录页面,记录请求的url,登录后跳转过去,用户体验好。 
}else{ //用户选择了记住登录状态 
$user = getUserInfo($_COOKIE['username'],$_COOKIE['password']); //去取用户的个人资料 
if(emptyempty($user)){ //用户名密码不对没到取到信息,转到登录页面 
header(”location:login.php?req_url=”.$_SERVER['REQUEST_URI']); 
}else{ 
$_SESSION['user_info'] = $user; //用户名和密码对了,把用户的个人资料放到session里面 
} 
} 
} 
} 
//检查用户是否登录 
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里面 
} 
} 
} 
}

在访问后台的每个页面时,都要先进行上面的检查

二,用户提交登录信息
当用户填写用户名和密码后就提交到这儿来,

$username = trim($_POST['username']); 
$password = md5(trim($_POST['password'])); 
$validatecode = $_POST['validateCode']; 
$ref_url = $_GET['req_url']; 
$remember = $_POST['remember']; $err_msg = ”; 
if($validatecode!=$_SESSION['checksum']){ 
$err_msg = “验证码不正确”; 
}elseif($username==” || $password==”){ 
$err_msg = “用户名和密码都不能为空”; 
}else{ 
$row = getUserInfo($username,$password); 
if(emptyempty($row)){ 
$err_msg = “用户名和密码都不正确”; 
}else{ 
$_SESSION['user_info'] = $row; 
if(!emptyempty($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”); 
} 
} 
} 
$username = trim($_POST['username']); 
$password = md5(trim($_POST['password'])); 
$validatecode = $_POST['validateCode']; 
$ref_url = $_GET['req_url']; 
$remember = $_POST['remember']; 
$err_msg = ”; 
if($validatecode!=$_SESSION['checksum']){ 
$err_msg = “验证码不正确”; 
}elseif($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”); 
} 
} 
}

关于$ref_url简单解释一下,假如:用户A访问b.php,但是A用户没有登录,跳转到登录页面login.php,在登录页面填完用户和密码后,确定后又跳转到b.php这个页面,而不是跳转一个默认的页面main_user.php。因为b.php是用户A想去的那个页面,所以用户体验会好一点。

三,当用户点退出时,清出记录登录状态

为什么要这样做呢,因为如果有别人用你的电脑的话,他们有可能会浏览到你的个人隐私,所以当用户特意点了退出时,最好是把记录登录状态取消掉。

//退出登录 
function logout(){ 
unset($_SESSION['user_info']); 
if(!emptyempty($_COOKIE['username']) || emptyempty($_COOKIE['password'])){ 
setcookie(”username”, null, time()-3600*24*365); 
setcookie(”password”, null, time()-3600*24*365); 
} 
}
PHP 相关文章推荐
PHP 将图片按创建时间进行分类存储的实现代码
Jan 05 PHP
php include加载文件两种方式效率比较
Aug 08 PHP
PHP file_exists问题杂谈
May 07 PHP
php对mongodb的扩展(初出茅庐)
Nov 11 PHP
php简单日历函数
Oct 28 PHP
Laravel中使用FormRequest进行表单验证方法及问题汇总
Jun 19 PHP
php解决和避免form表单重复提交的几种方法
Aug 31 PHP
PHP strcmp()和strcasecmp()的区别实例
Nov 05 PHP
laravel创建类似ThinPHP中functions.php的全局函数
Nov 26 PHP
php编程实现简单的网页版计算器功能示例
Apr 26 PHP
Laravel框架控制器的middleware中间件用法分析
Sep 30 PHP
搭建PhpStorm+PhpStudy开发环境的超详细教程
Sep 17 PHP
防止用户利用PHP代码DOS造成用光网络带宽
Mar 01 #PHP
php Smarty 字符比较代码
Feb 27 #PHP
php下批量挂马和批量清马代码
Feb 27 #PHP
php SQL Injection with MySQL
Feb 27 #PHP
PHP的SQL注入实现(测试代码安全不错)
Feb 27 #PHP
php通用防注入程序 推荐
Feb 26 #PHP
8个出色的WordPress SEO插件收集
Feb 26 #PHP
You might like
IIS6.0 开启Gzip方法及PHP Gzip函数分享
2014/06/08 PHP
php比较两个字符串长度的方法
2015/07/13 PHP
PHP实现bitmap位图排序与求交集的方法
2016/07/28 PHP
PHP实现给定一列字符,生成指定长度的所有可能组合示例
2019/06/22 PHP
10款非常有用的 Ajax 插件分享
2012/03/14 Javascript
JS刷新框架外页面七种实现代码
2013/02/18 Javascript
JavaScript中数组成员的添加、删除介绍
2014/12/30 Javascript
基于JavaScript实现图片点击弹出窗口而不是保存
2016/02/06 Javascript
js匿名函数作为函数参数详解
2016/06/01 Javascript
jQuery简单注册和禁用全局事件的方法
2016/07/25 Javascript
jquery封装插件时匿名函数形参和实参的写法解释
2017/02/14 Javascript
B/S(Web)实时通讯解决方案分享
2017/04/06 Javascript
初识NodeJS服务端开发入门(Express+MySQL)
2017/04/07 NodeJs
将jquery.qqFace.js表情转换成微信的字符码
2017/12/01 jQuery
layer弹出层全屏及关闭方法
2018/08/17 Javascript
详解python之简单主机批量管理工具
2017/01/27 Python
python调用摄像头显示图像的实例
2018/08/03 Python
Pycharm无法使用已经安装Selenium的解决方法
2018/10/13 Python
Python实现查找最小的k个数示例【两种解法】
2019/01/08 Python
10 分钟快速入门 Python3的教程
2019/01/29 Python
Django 重写用户模型的实现
2019/07/29 Python
Django--权限Permissions的例子
2019/08/28 Python
在django中使用post方法时,需要增加csrftoken的例子
2020/03/13 Python
python中sympy库求常微分方程的用法
2020/04/28 Python
中专生求职自荐信范文
2013/12/22 职场文书
初一地理教学反思
2014/01/16 职场文书
会计学生自我鉴定
2014/02/06 职场文书
服装店营销方案
2014/03/10 职场文书
热爱祖国的演讲稿
2014/05/04 职场文书
行政秘书工作自我鉴定
2014/09/15 职场文书
个人委托书如何写
2014/09/25 职场文书
个人求职信格式范文
2015/03/20 职场文书
上下班时间调整通知
2015/04/23 职场文书
生日宴会家属答谢词
2015/09/29 职场文书
2016党性教育学习心得体会
2016/01/21 职场文书
《称赞》教学反思
2016/02/17 职场文书