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 cron中的批处理
Sep 16 PHP
php读取EXCEL文件 php excelreader读取excel文件
Dec 06 PHP
php缓冲 output_buffering的使用详解
Jun 13 PHP
mcrypt启用 加密以及解密过程详细解析
Aug 07 PHP
PHP实现支持GET,POST,Multipart/form-data的HTTP请求类
Sep 24 PHP
PHP使用ffmpeg给视频增加字幕显示的方法
Mar 12 PHP
PHP中使用socket方式GET、POST数据实例
Apr 02 PHP
PHP获取指定月份第一天和最后一天的方法
Jul 18 PHP
Yii中Model(模型)的创建及使用方法
Dec 28 PHP
PHP递归遍历多维数组实现无限分类的方法
May 06 PHP
nginx下安装php7+php5
Jul 31 PHP
原生php实现excel文件读写的方法分析
Apr 25 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
一个查看session内容的函数
2006/10/09 PHP
解决GD中文乱码问题
2007/02/14 PHP
PHP实现PDO的mysql数据库操作类
2014/12/12 PHP
PHP简单处理表单输入的特殊字符的方法
2016/02/03 PHP
PHP简单获取多个checkbox值的方法
2016/06/13 PHP
php arsort 数组降序排序详细介绍
2016/11/17 PHP
YII2 实现多语言配置的方法分享
2017/01/11 PHP
php实现基于pdo的事务处理方法示例
2017/07/21 PHP
jquery中实现标签切换效果的代码
2011/03/01 Javascript
jQuery控制DIV层实现由大到小,由远及近动画变化效果
2015/10/09 Javascript
JS选取DOM元素的简单方法
2016/07/08 Javascript
Bootstrap基本组件学习笔记之导航(10)
2016/12/07 Javascript
Angular在一个页面中使用两个ng-app的方法(二)
2017/02/20 Javascript
利用vscode编写vue的简单配置详解
2017/06/17 Javascript
Nodejs把接收图片base64格式保存为文件存储到服务器上
2018/09/26 NodeJs
浅谈JS中几种轻松处理'this'指向方式
2019/09/16 Javascript
vue v-model的用法解析
2020/10/19 Javascript
python实现二叉查找树实例代码
2018/02/08 Python
使用Python抓取豆瓣影评数据的方法
2018/10/17 Python
Python响应对象text属性乱码解决方案
2020/03/31 Python
python 获取域名到期时间的方法步骤
2021/02/10 Python
css3实现垂直下拉动画菜单示例
2014/04/22 HTML / CSS
CSS中垂直居中的简单实现方法
2015/07/06 HTML / CSS
HTML5通过navigator.mediaDevices.getUserMedia调用手机摄像头问题
2020/04/27 HTML / CSS
香港最新科技与优质家居产品购物网站:J SELECT
2018/08/21 全球购物
世界经理人咨询有限公司面试
2014/09/23 面试题
业务员工作态度散漫检讨书
2014/11/02 职场文书
2015年安全生产责任书
2015/01/30 职场文书
民事诉讼答辩状范文
2015/05/21 职场文书
博士论文答辩开场白
2015/06/01 职场文书
秋收起义观后感
2015/06/11 职场文书
门球健将观后感
2015/06/16 职场文书
60条职场经典语录,总有一条能触动你的心
2019/08/21 职场文书
导游词之江南周庄
2019/12/06 职场文书
阿里云Nginx配置https实现域名访问项目(图文教程)
2021/03/31 Servers
MySQL查询学习之基础查询操作
2021/05/08 MySQL