php使用cookie实现记住登录状态


Posted in PHP onApril 27, 2015

要实现记住密码自动登录的功能我们大多数据都是利用了客户端的cookies来实现,我们利用php也不例外,有需要的朋友可以参考一下。

php制作记住密码自动登录的解决思路,其实也就是对session,cookies的操作

一、检查用户是否登录

//检查用户是否登录 

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(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");  

}  

}  

}

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

function logout(){  

unset($_SESSION['user_info']);  

if(!empty($_COOKIE['username']) || !empty($_COOKIE['password'])){  

setcookie("username", null, time()-3600*24*365);  

setcookie("password", null, time()-3600*24*365);  

}  

}

四、简洁版实例

<?

//读取COOKIE的用户名和密码的值即可

if($_COOKIE['uname']!=''){$CKUNAME =  $_COOKIE['uname'];}

if($_COOKIE['pwd']!=''){$CKPWD =  $_COOKIE['pwd'];}

echo $CKUNAME;

echo '<br>';

echo $CKPWD;

?>

<form id="form1" name="form1" method="post" action="">

    <input type="text" name="uname" id="uname" value="<?=$CKUNAME;?>" /> <input

       type="password" name="pwd" id="pwd" value="<?=$CKPWD;?>" /> <input

       name="remember" type="checkbox" value="1" <? if($CKUNAME!=''){?>

       checked="checked" <? } ?> /> 记住我! <input type="submit" name="button"

       id="button" value="登录" />

</form>

<?

//登录,将用户名和密码存入到COOKIE

if($_POST['button']!=''){

    $uname = $_POST['uname'];

    $pwd = $_POST['pwd'];

    //如果输入的加密密码和COOKIE中不一样,那么就加密

    if($pwd!=$CKPWD){$pwd = md5($pwd);}

    $remember = $_POST['remember'];

    if($remember==1){

       setcookie("uname", $uname, time()+3600*24*30);

       setcookie("pwd", $pwd, time()+3600*24*30);

    }

}

?>

PHP 相关文章推荐
PHP设计模式 注册表模式
Feb 05 PHP
PHP number_format() 函数定义和用法
Jun 01 PHP
php统计文章排行示例
Mar 04 PHP
实例介绍PHP的Reflection反射机制
Aug 05 PHP
ThinkPHP中url隐藏入口文件后接收alipay传值的方法
Dec 09 PHP
PHP自带ZIP压缩、解压缩类ZipArchiv使用指南
Mar 03 PHP
在WordPress中实现评论头像的自定义默认和延迟加载
Nov 24 PHP
WordPress的主题编写中获取头部模板和底部模板
Dec 28 PHP
php生成Android客户端扫描可登录的二维码
May 13 PHP
Yii2中使用asset压缩js,css文件的方法
Nov 24 PHP
基于Laravel5.4实现多字段登录功能方法示例
Aug 11 PHP
PHP使用Redis长连接的方法详解
Feb 12 PHP
php curl请求信息和返回信息设置代码实例
Apr 27 #PHP
PHP rsa加密解密使用方法
Apr 27 #PHP
PHP、Java des加密解密实例
Apr 27 #PHP
PHP永久登录、记住我功能实现方法和安全做法
Apr 27 #PHP
php curl 获取https请求的2种方法
Apr 27 #PHP
PHP curl伪造IP地址和header信息代码实例
Apr 27 #PHP
JavaScript实现滚动栏效果的方法
Apr 27 #PHP
You might like
PHP 进程锁定问题分析研究
2009/11/24 PHP
优化php效率,提高php性能的一些方法
2011/03/24 PHP
PHP递归调用数组值并用其执行指定函数的方法
2015/04/01 PHP
超级退弹代码
2008/07/07 Javascript
一个简单的jQuery计算器实现了连续计算功能
2014/07/21 Javascript
javascript判断变量是否有值的方法
2015/04/20 Javascript
JQuery中Ajax()的data参数类型实例分析
2015/12/15 Javascript
JS创建对象几种不同方法详解
2016/03/01 Javascript
原生JS实现匀速图片轮播动画
2016/10/18 Javascript
Javascript继承机制详解
2017/05/30 Javascript
基于Vue实现支持按周切换的日历
2020/09/24 Javascript
解决element-ui中下拉菜单子选项click事件不触发的问题
2018/08/22 Javascript
layui 表单标签的校验方法
2019/09/04 Javascript
js中Function引用类型常见有用的方法和属性详解
2019/12/11 Javascript
解决VUE mounted 钩子函数执行时 img 未加载导致页面布局的问题
2020/07/27 Javascript
[01:04:01]2014 DOTA2华西杯精英邀请赛5 24 DK VS VG
2014/05/25 DOTA
Python使用smtplib模块发送电子邮件的流程详解
2016/06/27 Python
深入浅出分析Python装饰器用法
2017/07/28 Python
python的unittest测试类代码实例
2017/12/07 Python
Python类的继承和多态代码详解
2017/12/27 Python
利用python如何在前程无忧高效投递简历
2019/05/07 Python
PyQt5连接MySQL及QMYSQL driver not loaded错误解决
2020/04/29 Python
Canon佳能美国官方商店:购买数码相机、数码单反相机、镜头和打印机
2016/11/15 全球购物
澳大利亚设计的优质鞋类和适合澳大利亚生活方式的服装:Rivers
2019/04/23 全球购物
毕业生个人投资创业计划书
2014/01/04 职场文书
大学生求职信
2014/06/17 职场文书
四风对照检查材料思想汇报
2014/09/20 职场文书
带刀到教室的检讨书
2014/10/04 职场文书
工作失职检讨书500字
2014/10/17 职场文书
2014年业务员工作总结范文
2014/11/17 职场文书
2014年保育员工作总结
2014/12/02 职场文书
体育教师个人工作总结
2015/02/09 职场文书
银行招聘自荐信
2015/03/06 职场文书
MySQL数据库实验之 触发器和存储过程
2022/06/21 MySQL
pytest实现多进程与多线程运行超好用的插件
2022/07/15 Python
SpringBoot前端后端分离之Nginx服务器下载安装过程
2022/08/14 Servers