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的单引号和双引号 字符串效率
May 27 PHP
php 模拟POST|GET操作实现代码
Jul 20 PHP
让Nginx支持ThinkPHP的URL重写和PATHINFO的方法分享
Aug 08 PHP
php利用curl抓取新浪微博内容示例
Apr 27 PHP
php+mysql查询优化简单实例
Jan 13 PHP
symfony表单与页面实现技巧
Jan 26 PHP
使用php-timeit估计php函数的执行时间
Sep 06 PHP
CI分页类首页、尾页不显示的解决方法
Mar 28 PHP
PHP中strpos、strstr和stripos、stristr函数分析
Jun 11 PHP
一键生成各种尺寸Icon的php脚本(实例)
Feb 08 PHP
Laravel Intervention/image图片处理扩展包的安装、使用与可能遇到的坑详解
Nov 14 PHP
记Laravel调用Gin接口调用formData上传文件的实现方法
Dec 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操作mysqli(示例代码)
2013/10/28 PHP
PHP函数实现分页含文本分页和数字分页
2014/10/23 PHP
php使用递归函数实现数字累加的方法
2015/03/16 PHP
简单解决新浪SAE无法上传文件的问题
2015/05/13 PHP
CI(CodeIgniter)框架视图中加载视图的方法
2017/03/24 PHP
jqeury eval将字符串转换json的方法
2011/01/20 Javascript
JQuery onload、ready概念介绍及使用方法
2013/04/27 Javascript
js防止表单重复提交的两种方法
2013/09/30 Javascript
js模拟C#中List的简单实例
2014/03/06 Javascript
Bootstrap框架动态生成Web页面文章内目录的方法
2016/05/12 Javascript
jquery 将当前时间转换成yyyymmdd格式的实现方法
2016/06/01 Javascript
angular仿支付宝密码框输入效果
2017/03/25 Javascript
原生js jquery ajax请求以及jsonp的调用方法
2017/08/04 jQuery
nodejs 图片预览和上传的示例代码
2017/09/30 NodeJs
vue.js图片转Base64上传图片并预览的实现方法
2018/08/02 Javascript
优雅的在React项目中使用Redux的方法
2018/11/10 Javascript
Angular value与ngValue区别详解
2019/11/27 Javascript
python实现去除下载电影和电视剧文件名中的多余字符的方法
2014/09/23 Python
python写入xml文件的方法
2015/05/08 Python
python实现excel读写数据
2021/03/02 Python
10 行Python 代码实现 AI 目标检测技术【推荐】
2019/06/14 Python
Django上使用数据可视化利器Bokeh解析
2019/07/31 Python
django框架基于queryset和双下划线的跨表查询操作详解
2019/12/11 Python
Python基础之函数基本用法与进阶详解
2020/01/02 Python
django 读取图片到页面实例
2020/03/27 Python
解决python图像处理图像赋值后变为白色的问题
2020/06/04 Python
英国门把手公司:Door Handle Company
2019/05/12 全球购物
美国新娘礼品店:The Paisley Box
2020/09/08 全球购物
农行实习自我鉴定
2013/09/22 职场文书
假日旅行社实习自我鉴定
2013/09/24 职场文书
项目考察欢迎辞
2014/01/17 职场文书
2015年元旦活动总结
2014/05/09 职场文书
预备党员学习十八届三中全会精神思想汇报
2014/09/13 职场文书
小学四年级作文之写景
2019/08/23 职场文书
Java中使用Filter过滤器的方法
2021/06/28 Java/Android
redis调用二维码时的不断刷新排查分析
2022/04/01 Redis