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 17 PHP
apache和php之间协同工作的配置经验分享
Apr 08 PHP
php根据isbn书号查询amazon网站上的图书信息的示例
Feb 13 PHP
PHP实现的交通银行网银在线支付接口ECSHOP插件和使用例子
May 10 PHP
Codeigniter中mkdir创建目录遇到权限问题和解决方法
Jul 25 PHP
Yii实现文章列表置顶功能示例
Oct 18 PHP
thinkphp下MySQL数据库读写分离代码剖析
Apr 18 PHP
php中时间函数date及常用的时间计算
May 12 PHP
php使用crypt()函数进行加密
Jun 08 PHP
php从数据库中获取数据用ajax传送到前台的方法
Aug 20 PHP
Laravel 默认邮箱登录改成用户名登录的实现方法
Aug 12 PHP
laravel 实现划分admin和home 模块分组
Oct 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树的代码,可以嵌套任意层
2006/10/09 PHP
PHP中的string类型使用说明
2010/07/27 PHP
PHP数据库万能引擎类adodb配置使用以及实例集锦
2014/06/12 PHP
jquery trim() 功能源代码
2011/02/14 Javascript
重写javascript中window.confirm的行为
2012/10/21 Javascript
createTextRange()的使用示例含文本框选中部分文字内容
2014/02/24 Javascript
jquery取子节点及当前节点属性值的方法
2014/09/09 Javascript
jquery基础知识第一讲之认识jquery
2016/03/17 Javascript
js实现简单的碰壁反弹效果
2016/08/30 Javascript
Angular和Vue双向数据绑定的实现原理(重点是vue的双向绑定)
2016/11/22 Javascript
js实现用户输入的小写字母自动转大写字母的方法
2017/01/21 Javascript
详解angular2采用自定义指令(Directive)方式加载jquery插件
2017/02/09 Javascript
详解vue.js的devtools安装
2017/05/26 Javascript
深入理解Angular4中的依赖注入
2017/06/07 Javascript
bootstrap table表格插件之服务器端分页实例代码
2018/09/12 Javascript
详解处理Vue单页面应用SEO的另一种思路
2018/11/09 Javascript
Vue Autocomplete 自动完成功能简单示例
2019/05/25 Javascript
vue 解决遍历对象显示的顺序不对问题
2019/11/07 Javascript
javascript设计模式 ? 装饰模式原理与应用实例分析
2020/04/14 Javascript
[03:42]2014DOTA2西雅图国际邀请赛 Navi战队巡礼
2014/07/07 DOTA
[05:05]给小松五分钟系列 第二期介绍为什么打DOTA2
2014/07/02 DOTA
[01:56]2014DOTA2西雅图邀请赛 MVP外卡赛老队长精辟点评
2014/07/09 DOTA
python3.4用函数操作mysql5.7数据库
2017/06/23 Python
解决python3 urllib 链接中有中文的问题
2018/07/16 Python
python判断文件是否存在,不存在就创建一个的实例
2019/02/18 Python
scrapy-redis源码分析之发送POST请求详解
2019/05/15 Python
python实现五子棋人机对战游戏
2020/03/25 Python
Python退出时强制运行一段代码的实现方法
2020/04/29 Python
美体小铺波兰官方网站:The Body Shop波兰
2019/09/03 全球购物
说明书怎么写
2014/05/06 职场文书
工业设计专业自荐书
2014/06/05 职场文书
学校感恩节活动策划方案
2014/10/06 职场文书
审计局班子四风对照检查材料思想汇报
2014/10/07 职场文书
2016天猫双十一广告语
2016/01/28 职场文书
【超详细】八大排序算法的各项比较以及各自特点
2021/03/31 Python
海贼王十大逆天果实 魂魂果实上榜,岩浆果实攻击力最强
2022/03/18 日漫