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 相关文章推荐
第4章 数据处理-php正则表达式-郑阿奇(续)
Jul 04 PHP
利用ThinkPHP内置的ThinkAjax实现异步传输技术的实现方法
Dec 19 PHP
解析数组非数字键名引号的必要性
Aug 09 PHP
php 发送带附件邮件示例
Jan 23 PHP
php+ajax实现无刷新分页的方法
Nov 04 PHP
详解PHP错误日志的获取方法
Jul 20 PHP
Joomla框架实现字符串截取的方法示例
Jul 18 PHP
yii框架redis结合php实现秒杀效果(实例代码)
Oct 26 PHP
PHP PDOStatement::setFetchMode讲解
Feb 03 PHP
对laravel in 查询的使用方法详解
Oct 09 PHP
Yii框架视图、视图布局、视图数据块操作示例
Oct 14 PHP
PHP配合fiddler抓包抓取微信指数小程序数据的实现方法分析
Jan 02 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数组相关函数汇总
2015/03/24 PHP
PHP中key和current,next的联合运用实例分析
2016/03/29 PHP
js 键盘记录实现(兼容FireFox和IE)
2010/02/07 Javascript
jquery中获取元素的几种方式小结
2011/07/05 Javascript
node.js中的fs.writeFile方法使用说明
2014/12/14 Javascript
ExpressJS入门实例
2015/01/14 Javascript
Node.js实现Excel转JSON
2015/04/24 Javascript
JQuery+EasyUI轻松实现步骤条效果
2016/02/22 Javascript
浅析JavaScript Array和string的转换(推荐)
2016/05/20 Javascript
Jquery Easyui搜索框组件SearchBox使用详解(19)
2016/12/17 Javascript
Angular 4.x 路由快速入门学习
2017/05/03 Javascript
完美解决手机网页中输入框被输入法遮挡的问题
2017/12/19 Javascript
使用vue 国际化i18n 实现多实现语言切换功能
2018/10/11 Javascript
解决IOS端微信H5页面软键盘弹起后页面下方留白的问题
2019/06/05 Javascript
Vue项目实现简单的权限控制管理功能
2019/07/17 Javascript
Vue执行方法,方法获取data值,设置data值,方法传值操作
2020/08/05 Javascript
Python中property函数用法实例分析
2018/06/04 Python
python 文本单词提取和词频统计的实例
2018/12/22 Python
Django中自定义查询对象的具体使用
2019/10/13 Python
如何基于Python获取图片的物理尺寸
2019/11/25 Python
python创建子类的方法分析
2019/11/28 Python
Python Websocket服务端通信的使用示例
2020/02/25 Python
HTML5网页录音和上传到服务器支持PC、Android,支持IOS微信功能
2019/04/26 HTML / CSS
html5+css如何实现中间大两头小的轮播效果
2018/12/06 HTML / CSS
LA MER海蓝之谜美国官网:传奇面霜
2016/08/27 全球购物
土耳其时尚购物网站:Morhipo
2017/09/04 全球购物
任意存:BOXFUL
2018/05/21 全球购物
《美丽的公鸡》教学反思
2014/02/25 职场文书
大学活动总结范文
2014/04/29 职场文书
党建工作目标管理责任书
2015/01/29 职场文书
导游词幽默开场白
2019/06/26 职场文书
大学校园餐饮创业计划书
2019/08/07 职场文书
导游词之四川武侯祠
2019/10/21 职场文书
教你利用python实现企业微信发送消息
2021/05/23 Python
MySQL里面的子查询的基本使用
2021/08/02 MySQL
MySQL学习必备条件查询数据
2022/03/25 MySQL