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下MYSQL limit的优化
Jan 10 PHP
php REMOTE_ADDR之获取访客IP的代码
Apr 22 PHP
用PHP伪造referer突破网盘禁止外连的代码
Jun 15 PHP
解析PayPal支付接口的PHP开发方式
Nov 28 PHP
PHP 类相关函数的使用详解
May 10 PHP
php操作mysql数据库的基本类代码
Feb 25 PHP
CentOS 安装 PHP5.5+Redis+XDebug+Nginx+MySQL全纪录
Mar 25 PHP
php使用指定编码导出mysql数据到csv文件的方法
Mar 31 PHP
在Ubuntu 18.04上安装PHP 7.3 7.2和7.0的方法
Apr 09 PHP
php+laravel依赖注入知识点总结
Nov 04 PHP
laravel 框架执行流程与原理简单分析
Feb 01 PHP
PHP中类与对象功能、用法实例解读
Mar 27 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实现购物车功能(下)
2016/01/05 PHP
利用php-cli和任务计划实现刷新token功能的方法
2017/05/03 PHP
Javascript 检测、添加、移除样式(className)函数代码
2009/09/08 Javascript
Array, Array Constructor, for in loop, typeof, instanceOf
2011/09/13 Javascript
jquery显示隐藏input对象
2014/07/21 Javascript
JavaScript中setUTCFullYear()方法的使用简介
2015/06/12 Javascript
浅析jQuery Mobile的初始化事件
2015/12/03 Javascript
javascript中Date format(js日期格式化)方法小结
2015/12/17 Javascript
JS中parseInt()和map()用法分析
2016/12/16 Javascript
微信小程序 九宫格实例代码
2017/01/21 Javascript
使用selenium抓取淘宝的商品信息实例
2018/02/06 Javascript
Angular6笔记之封装http的示例代码
2018/07/27 Javascript
vue.js 图片上传并预览及图片更换功能的实现代码
2018/08/27 Javascript
vue-vuex中使用commit提交mutation来修改state的方法详解
2018/09/16 Javascript
JavaScript中关于base64的一些事
2019/05/06 Javascript
vue + axios get下载文件功能
2019/09/25 Javascript
react-native聊天室|RN版聊天App仿微信实例|RN仿微信界面
2019/11/12 Javascript
vue-router结合vuex实现用户权限控制功能
2019/11/14 Javascript
vue项目实现设置根据路由高亮对应的菜单项操作
2020/08/06 Javascript
VUE实现吸底按钮
2021/03/04 Vue.js
Python3.5.3下配置opencv3.2.0的操作方法
2018/04/02 Python
python 处理dataframe中的时间字段方法
2018/04/10 Python
Python的对象传递与Copy函数使用详解
2019/12/26 Python
django教程如何自学
2020/07/31 Python
属性与 @property 方法让你的python更高效
2020/09/21 Python
英国最大的户外商店:Go Outdoors
2019/04/17 全球购物
经济信息管理专业大学生求职信
2013/09/27 职场文书
活动志愿者自荐信
2014/01/27 职场文书
房屋买卖委托公证书
2014/04/08 职场文书
授权委托书(完整版)
2014/09/10 职场文书
社区活动总结
2015/02/04 职场文书
大学生个人简历自我评价
2015/03/11 职场文书
债务追讨律师函
2015/06/24 职场文书
三八红旗手先进事迹材料(2016推荐版)
2016/02/25 职场文书
原生JS封装vue Tab切换效果
2021/04/28 Vue.js
pytorch 如何使用amp进行混合精度训练
2021/05/24 Python