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 相关文章推荐
Phpbean路由转发的php代码
Jan 10 PHP
Ajax PHP简单入门教程代码
Apr 25 PHP
10个实用的PHP代码片段
Sep 02 PHP
提高php运行速度的一些小技巧分享
Jul 03 PHP
比较简单的百度网盘文件直链PHP代码
Mar 24 PHP
linux下编译安装memcached服务
Aug 03 PHP
php中Socket创建与监听实现方法
Jan 05 PHP
PHP中字符安全过滤函数使用小结
Feb 25 PHP
PHP测试成功的邮件发送案例
Oct 26 PHP
thinkPHP中session()方法用法详解
Dec 08 PHP
php正则修正符用法实例详解
Dec 29 PHP
Linux基于php-fpm模式的lamp搭建phpmyadmin的方法
Oct 25 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
我的论坛源代码(三)
2006/10/09 PHP
用sql命令修改数据表中的一个字段为非空(not null)的语句
2010/06/04 PHP
php输出xml必须header的解决方法
2014/10/17 PHP
php+flash+jQuery多图片上传源码分享
2020/07/27 PHP
用Laravel轻松处理千万级数据的方法实现
2020/12/25 PHP
IE中直接运行显示当前网页中的图片 推荐
2006/08/31 Javascript
JavaScript中yield实用简洁实现方式
2010/06/12 Javascript
Jquery Autocomplete 结合asp.net使用要点
2010/10/29 Javascript
TBCompressor js代码压缩
2011/01/05 Javascript
jQuery选择器querySelector的使用指南
2015/01/23 Javascript
无刷新上传文件并返回自定义值
2015/06/11 Javascript
javascript实现一个数值加法函数
2015/06/26 Javascript
jQuery事件与动画基础详解
2017/02/23 Javascript
JavaScript函数柯里化原理与用法分析
2017/03/31 Javascript
angularjs定时任务的设置与清除示例
2017/06/02 Javascript
vue.js中created方法作用
2018/03/30 Javascript
详解vue文件中使用echarts.js的两种方式
2018/10/18 Javascript
Vue+Vuex实现自动登录的知识点详解
2020/03/04 Javascript
JS实现iframe中子父页面跨域通讯的方法分析
2020/03/10 Javascript
js根据后缀判断文件文件类型的代码
2020/05/09 Javascript
微信公众号网页分享功能开发的示例代码
2020/05/27 Javascript
微信小程序学习总结(二)样式、属性、模板操作分析
2020/06/04 Javascript
python 参数列表中的self 显式不等于冗余
2008/12/01 Python
Python 正则表达式的高级用法
2016/12/04 Python
python破解zip加密文件的方法
2018/05/31 Python
如何用Python做一个微信机器人自动拉群
2019/07/03 Python
Python urllib2运行过程原理解析
2020/06/04 Python
Python实现七个基本算法的实例代码
2020/10/08 Python
泰国的头号网上婴儿用品店:Motherhood.co.th
2019/04/09 全球购物
ShellScript面试题一则-ShellScript编程
2014/06/24 面试题
商务日语毕业生自荐信范文
2013/11/14 职场文书
日语专业个人的求职信
2013/12/03 职场文书
电子专业毕业生自我鉴定
2014/01/22 职场文书
运动会跳远加油稿
2014/02/20 职场文书
基层党员群众路线教育实践活动个人对照检查材料思想汇报
2014/10/05 职场文书
my.ini优化mysql数据库性能的十个参数(推荐)
2021/05/26 MySQL