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 相关文章推荐
Windows下的PHP5.0详解
Nov 18 PHP
php IP转换整形(ip2long)的详解
Jun 06 PHP
使用PHP生成二维码的两种方法(带logo图像)
Mar 14 PHP
php使用ereg验证文件上传的方法
Dec 16 PHP
PHP中防止SQL注入方法详解
Dec 25 PHP
php生成过去100年下拉列表的方法
Jul 20 PHP
PHP常用的三种设计模式
Feb 17 PHP
PHP实现上传多文件示例代码
Feb 20 PHP
php实现生成带二维码图片并强制下载功能
Feb 24 PHP
深入研究PHP中的preg_replace和代码执行
Aug 15 PHP
laravel利用中间件防止未登录用户直接访问后台的方法
Sep 30 PHP
laravel解决迁移文件一次删除创建字段报错的问题
Oct 24 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与SQL注入攻击[二]
2007/04/17 PHP
PHP 网络开发详解之远程文件包含漏洞
2010/04/25 PHP
php中explode函数用法分析
2014/11/15 PHP
利用php做服务器和web前端的界面进行交互
2016/10/31 PHP
Laravel 的数据库迁移的方法
2017/07/31 PHP
javascript事件模型代码
2007/07/01 Javascript
JS 图片缩放效果代码
2010/06/09 Javascript
DOM Scripting中的图片切换[兼容Firefox]
2010/06/12 Javascript
JS的replace方法介绍
2012/10/20 Javascript
node.js正则表达式获取网页中所有链接的代码实例
2014/06/03 Javascript
js实现在同一窗口浏览图片
2014/09/17 Javascript
关于JS变量和作用域详解
2016/07/28 Javascript
详谈AngularJs 控制器、数据绑定、作用域
2017/07/09 Javascript
在vue项目创建的后初始化首次使用stylus安装方法分享
2018/01/25 Javascript
nodejs读取本地中文json文件出现乱码解决方法
2018/10/10 NodeJs
使用JS获取页面上的所有标签
2018/10/18 Javascript
详解ES6系列之私有变量的实现
2018/11/21 Javascript
layui实现鼠标移动到单元格上显示数据的方法
2019/09/11 Javascript
js+springMVC 提交数组数据到后台的实例
2019/09/21 Javascript
[02:40]DOTA2殁境神蚀者 英雄基础教程
2013/11/26 DOTA
[01:12:40]DOTA2-DPC中国联赛 正赛 DLG vs XG BO3 第三场 1月25日
2021/03/11 DOTA
Python多进程池 multiprocessing Pool用法示例
2018/09/07 Python
详解python列表生成式和列表生成式器区别
2019/03/27 Python
Python选择网卡发包及接收数据包
2019/04/04 Python
使用OpenCV对车道进行实时检测的实现示例代码
2020/06/19 Python
浅谈如何使用python抓取网页中的动态数据实现
2020/08/17 Python
PyTorch中clone()、detach()及相关扩展详解
2020/12/09 Python
美国网上眼镜商城:Zenni Optical
2016/11/20 全球购物
大学生毕业自我鉴定范文
2013/09/19 职场文书
保证书范文大全
2014/04/28 职场文书
大学竞选班干部演讲稿
2014/08/21 职场文书
落实八项规定专题民主生活会对照检查材料
2014/09/15 职场文书
个人委托书如何写
2014/09/25 职场文书
红旗渠导游词
2015/02/09 职场文书
大学生奖学金获奖感言(范文)
2019/08/15 职场文书
详解MySQL数据库千万级数据查询和存储
2021/05/18 MySQL