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 相关文章推荐
一个查看session内容的函数
Oct 09 PHP
php抓取页面与代码解析 推荐
Jul 23 PHP
PHP导出MySQL数据到Excel文件(fputcsv)
Jul 03 PHP
PHP 验证码的实现代码
Jul 17 PHP
php 广告调用类代码(支持Flash调用)
Aug 11 PHP
PHP数据类型之整数类型、浮点数的介绍
Apr 28 PHP
php使用smtp发送支持附件的邮件示例
Apr 13 PHP
PHP正则表达式之捕获组与非捕获组
Nov 06 PHP
PHP如何通过AJAX方式实现登录功能
Nov 23 PHP
PHP检测用户是否关闭浏览器的方法
Feb 14 PHP
PHP根据key删除数组中指定的元素
Feb 28 PHP
php根据命令行参数生成配置文件详解
Mar 15 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
PHP 柱状图实现代码
2009/12/04 PHP
php出现内存位置访问无效错误问题解决方法
2014/08/16 PHP
PHP在linux上执行外部命令的方法
2017/02/06 PHP
PHP关于foreach复制知识点总结
2019/01/28 PHP
jQuery 核心函数以及jQuery对象
2010/03/23 Javascript
用js判断页面刷新或关闭的方法(onbeforeunload与onunload事件)
2012/06/22 Javascript
实例讲解js验证表单项是否为空的方法
2016/01/09 Javascript
分离与继承的思想实现图片上传后的预览功能:ImageUploadView
2016/04/07 Javascript
PHP捕捉异常中断的方法
2016/10/24 Javascript
Vue.js -- 过滤器使用总结
2017/02/18 Javascript
JavaScript实现简单轮播图效果
2018/12/01 Javascript
通过JQuery,JQueryUI和Jsplumb实现拖拽模块
2019/06/18 jQuery
微信小程序实现下拉刷新动画
2019/06/21 Javascript
前端Electron新手入门教程详解
2019/06/21 Javascript
js实现课堂随机点名系统
2019/11/21 Javascript
vue+elementUI实现简单日历功能
2020/09/24 Javascript
vue3.0实现插件封装
2020/12/14 Vue.js
python文件比较示例分享
2014/01/10 Python
将Python代码打包为jar软件的简单方法
2015/08/04 Python
python使用pil库实现图片合成实例代码
2018/01/20 Python
Python延时操作实现方法示例
2018/08/14 Python
Python基于OpenCV实现人脸检测并保存
2019/07/23 Python
英国网上香水店:Fragrance Direct
2016/07/20 全球购物
英国评分最高的女性剃须刀订阅盒:FFS Beauty
2018/01/25 全球购物
工作表现评语
2014/01/19 职场文书
触摸春天教学反思
2014/02/03 职场文书
2014年秋季开学演讲稿
2014/05/24 职场文书
2014年廉洁自律承诺书
2014/05/26 职场文书
2014乡镇干部纪律作风整顿思想汇报
2014/09/13 职场文书
未中标通知书
2015/04/17 职场文书
书法社团活动总结
2015/05/07 职场文书
公司员工管理制度
2015/08/04 职场文书
2016年度员工工作表现评语
2015/12/02 职场文书
创业计划书之o2o水果店
2019/08/30 职场文书
Python实战之实现简易的学生选课系统
2021/05/25 Python
Android移动应用开发指南之六种布局详解
2022/09/23 Java/Android