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实现与ASP Banner组件相似的类
Oct 09 PHP
PHP的中问验证码
Nov 25 PHP
php环境配置 php5 MySQL5 apache2 phpmyadmin安装与配置图文教程
Mar 16 PHP
PHP表单提交表单名称含有点号(.)则会被转化为下划线(_)
Dec 14 PHP
PHP文件去掉PHP注释空格的函数分析(PHP代码压缩)
Jul 02 PHP
PHP依赖倒置(Dependency Injection)代码实例
Oct 11 PHP
PHP图片自动裁切应付不同尺寸的显示
Oct 16 PHP
配置php.ini实现PHP文件上传功能
Nov 27 PHP
Yii2 批量插入、更新数据实例
Mar 15 PHP
tp5 sum某个字段相加得到总数的例子
Oct 18 PHP
Thinkphp集成抖音SDK的实现方法
Apr 28 PHP
PHP引擎php.ini参数优化深入讲解
Mar 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
一个MYSQL操作类
2006/11/16 PHP
PHP curl_setopt()函数实例代码与参数分析
2011/06/02 PHP
PHP使用in_array函数检查数组中是否存在某个值
2015/03/25 PHP
浅析Yii2中GridView常见操作
2016/04/22 PHP
PHP ajax+jQuery 实现批量删除功能实例代码小结
2018/12/06 PHP
浅谈thinkphp的nginx配置,以及重写隐藏index.php入口文件方法
2019/10/12 PHP
FireFox下XML对象转化成字符串的解决方法
2011/12/09 Javascript
调用HttpHanlder的几种返回方式小结
2013/12/20 Javascript
JS实现的多张图片轮流播放幻灯片效果
2016/07/22 Javascript
微信小程序实现多选功能
2018/11/04 Javascript
微信 jssdk 签名错误invalid signature的解决方法
2019/01/14 Javascript
vue中使用vue-cli接入融云实现即时通信
2019/04/19 Javascript
详解vue 2.6 中 slot 的新用法
2019/07/09 Javascript
VSCode插件安装完成后的配置(常用配置)
2020/08/24 Javascript
Python 元类使用说明
2009/12/18 Python
Python并发:多线程与多进程的详解
2019/01/24 Python
django框架用户权限中的session缓存到redis中的方法
2019/08/06 Python
Django 后台获取文件列表 InMemoryUploadedFile的例子
2019/08/07 Python
打印tensorflow恢复模型中所有变量与操作节点方式
2020/05/26 Python
HTML5是什么 HTML5是什么意思 HTML5简介
2012/10/26 HTML / CSS
iHerb香港:维生素、补充剂和天然保健品
2017/08/01 全球购物
日本著名的服饰鞋帽综合类购物网站:MAGASEEK
2019/01/09 全球购物
丹麦优惠购物网站:PLUSSHOP
2019/03/24 全球购物
什么是抽象
2015/12/13 面试题
中医专业应届生求职信
2013/11/17 职场文书
旅游管理专业大学生职业规划书
2014/02/27 职场文书
地质灾害防治方案
2014/05/14 职场文书
商场周年庆活动方案
2014/08/19 职场文书
房屋租赁协议书
2014/10/18 职场文书
个人四风问题整改措施
2014/10/24 职场文书
先进班集体事迹材料
2014/12/25 职场文书
三好学生个人总结
2015/02/15 职场文书
学校国庆节活动总结
2015/03/23 职场文书
2015暑假假期总结
2015/07/13 职场文书
“学党章、守党纪、讲党规”学习心得体会
2016/01/14 职场文书
用python修改excel表某一列内容的操作方法
2021/06/11 Python