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保存和输出图片
Oct 09 PHP
信用卡效验程序
Oct 09 PHP
同一空间绑定多个域名而实现访问不同页面的PHP代码
Dec 06 PHP
需要使用php模板的朋友必看的很多个顶级PHP模板引擎比较分析
May 26 PHP
PHP中创建空文件的代码[file_put_contents vs touch]
Jan 20 PHP
PHP基础之运算符的使用方法
Apr 28 PHP
PHP 简易输出CSV表格文件的方法详解
Jun 20 PHP
php中ob_get_length缓冲与获取缓冲长度实例
Nov 20 PHP
PHP之正则表达式捕获组与非捕获组(详解)
Jul 29 PHP
WordPress开发中自定义菜单的相关PHP函数使用简介
Jan 05 PHP
PHP实现会员账号单唯一登录的方法分析
Mar 07 PHP
PHP的图像处理实例小结【文字水印、图片水印、压缩图像等】
Dec 20 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载入图像imagecreatefrom_gif_jpeg_png系列函数用法分析
2016/11/14 PHP
PHP实现的简单AES加密解密算法实例
2017/05/29 PHP
微信公众号开发之获取位置信息php代码
2018/06/13 PHP
小程序微信支付功能配置方法示例详解【基于thinkPHP】
2019/05/05 PHP
json 入门基础教程 推荐
2009/10/31 Javascript
jquery $.ajax相关用法分享
2012/03/16 Javascript
javascript 中String.match()与RegExp.exec()的区别说明
2013/01/10 Javascript
侧栏跟随滚动的简单实现代码
2013/03/18 Javascript
jQuery函数map()和each()介绍及异同点分析
2014/11/08 Javascript
使用mini-define实现前端代码的模块化管理
2014/12/25 Javascript
Jquery 实现checkbox全选方法
2015/01/28 Javascript
JavaScript实现图片自动加载的瀑布流效果
2016/04/11 Javascript
javascript的理解及经典案例分析
2016/05/20 Javascript
详解vue-router 2.0 常用基础知识点之router-link
2017/05/10 Javascript
JavaScript实现的可变动态数字键盘控件方式实例代码
2017/07/15 Javascript
阿里大于短信验证码node koa2的实现代码(最新)
2017/09/07 Javascript
node.js环境搭建图文详解
2018/09/19 Javascript
JS实现的类似微信聊天效果示例
2019/01/29 Javascript
React+Redux实现简单的待办事项列表ToDoList
2019/09/29 Javascript
使用vue打包进行云服务器上传的问题
2020/03/02 Javascript
[02:32]DOTA2完美大师赛场馆静安体育中心观赛全攻略
2017/11/08 DOTA
Python ljust rjust center输出
2008/09/06 Python
从零学python系列之数据处理编程实例(一)
2014/05/22 Python
Python获取电脑硬件信息及状态的实现方法
2014/08/29 Python
11个并不被常用但对开发非常有帮助的Python库
2015/03/31 Python
使用PDB简单调试Python程序简明指南
2015/04/25 Python
python简单读取大文件的方法
2016/07/01 Python
详解Python自建logging模块
2018/01/29 Python
用python给自己做一款小说阅读器过程详解
2019/07/11 Python
使用 Python 遍历目录树的方法
2020/02/29 Python
pycharm配置python 设置pip安装源为豆瓣源
2021/02/05 Python
Math.round(11.5)等於多少? Math.round(-11.5)等於多少?
2015/01/27 面试题
教育实习生的自我评价分享
2013/11/21 职场文书
园林资料员岗位职责
2013/12/30 职场文书
个人四风问题对照检查材料
2014/10/01 职场文书
个人查摆问题及整改措施
2014/10/16 职场文书