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获取网站域名和地址的代码
Aug 17 PHP
PHP下10件你也许并不了解的事情
Sep 11 PHP
php中修改浏览器的User-Agent来伪装你的浏览器和操作系统
Jul 29 PHP
php模拟ping命令(php exec函数的使用方法)
Oct 25 PHP
php读取excel文件示例分享(更新修改excel)
Feb 27 PHP
php通过文件流方式复制文件的方法
Mar 13 PHP
php实现的mongoDB单例模式操作类
Jan 20 PHP
PHP实现的AES加密、解密封装类与用法示例
Aug 02 PHP
PHP命名空间定义与用法实例分析
Aug 14 PHP
php 使用expat方式解析xml文件操作示例
Nov 26 PHP
laravel框架select2多选插件初始化默认选中项操作示例
Feb 18 PHP
PHP接口类(interface)的定义、特点和应用示例
May 18 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
ThinkPHP空模块和空操作详解
2014/06/30 PHP
浅谈使用PHP开发微信支付的流程
2015/10/04 PHP
php常用正则函数实例小结
2016/12/29 PHP
YII2 实现多语言配置的方法分享
2017/01/11 PHP
Avengerls vs Newbee BO3 第三场2.18
2021/03/10 DOTA
javascript编程起步(第五课)
2007/01/10 Javascript
CLASS_CONFUSION JS混淆 全源码
2007/12/12 Javascript
JS 实现双色表格实现代码
2009/11/24 Javascript
新老版本juqery获取radio对象的方法
2010/03/01 Javascript
javascript实现抽奖程序的简单实例
2016/06/07 Javascript
基于webpack-hot-middleware热加载相关错误的解决方法
2018/02/22 Javascript
在create-react-app中使用css modules的示例代码
2018/07/31 Javascript
fetch 如何实现请求数据
2018/12/20 Javascript
vue多层嵌套路由实例分析
2019/03/19 Javascript
JS中超越现实的匿名函数用法实例分析
2019/06/21 Javascript
详解Vue后台管理系统开发日常总结(组件PageHeader)
2019/11/01 Javascript
使用vue构建多页面应用的示例
2020/10/22 Javascript
python映射列表实例分析
2015/01/26 Python
Python使用urllib2模块抓取HTML页面资源的实例分享
2016/05/03 Python
不要用强制方法杀掉python线程
2017/02/26 Python
用pickle存储Python的原生对象方法
2017/04/28 Python
Python基于递归算法实现的走迷宫问题
2017/08/04 Python
python实现给scatter设置颜色渐变条colorbar的方法
2018/12/13 Python
python变量赋值方法(可变与不可变)
2019/01/12 Python
处理python中多线程与多进程中的数据共享问题
2019/07/28 Python
python 轮询执行某函数的2种方式
2020/05/03 Python
PIL.Image.open和cv2.imread的比较与相互转换的方法
2020/06/03 Python
真正了解CSS3背景下的@font face规则
2017/05/04 HTML / CSS
css3 中translate和transition的使用方法
2020/03/26 HTML / CSS
html5中 media(播放器)的api使用指南
2014/12/26 HTML / CSS
美国精品家居用品网站:US-Mattress
2016/08/24 全球购物
大学毕业感言50字
2014/02/07 职场文书
绿化工程实施方案
2014/03/17 职场文书
电话营销开场白
2015/05/29 职场文书
春季运动会加油词
2015/07/18 职场文书
一篇文章带你掌握SQLite3基本用法
2022/06/14 数据库