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边学边教》(04.编写简易的通讯录――视频教程1)
Dec 13 PHP
php中取得文件的后缀名?
Feb 20 PHP
php调用KyotoTycoon简单实例
Apr 02 PHP
Yii2框架数据库简单的增删改查语法小结
Aug 31 PHP
PHP中Cookie的使用详解(简单易懂)
Apr 28 PHP
解析 thinkphp 框架中的部分方法
May 07 PHP
深入浅析PHP的session反序列化漏洞问题
Jun 15 PHP
thinkphp 抓取网站的内容并且保存到本地的实例详解
Aug 25 PHP
深入理解PHP的远程多会话调试
Sep 21 PHP
layui框架实现文件上传及TP3.2.3(thinkPHP)对上传文件进行后台处理操作示例
May 12 PHP
PHP 对接美团大众点评团购券(门票)的开发步骤
Apr 03 PHP
PHP获取学生成绩的方法
Nov 17 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
不用数据库的多用户文件自由上传投票系统(3)
2006/10/09 PHP
让你成为更出色的PHP开发者的10个技巧
2011/02/25 PHP
php循环语句 for()与foreach()用法区别介绍
2012/09/05 PHP
推荐5款跨平台的PHP编辑器
2014/12/25 PHP
PHP记录搜索引擎蜘蛛访问网站足迹的方法
2015/04/15 PHP
php源码 fsockopen获取网页内容实例详解
2016/09/24 PHP
PHP实现的各类hash算法长度及性能测试实例
2017/08/27 PHP
javascript 建设银行登陆键盘
2008/06/10 Javascript
img标签中onerror用法
2009/08/13 Javascript
Javascript中匿名函数的多种调用方式总结
2013/12/06 Javascript
浅析jQuery1.8的几个小变化
2013/12/10 Javascript
JavaScript中的迭代器和生成器详解
2014/10/29 Javascript
AngularJs directive详解及示例代码
2016/09/01 Javascript
vue-router跳转页面的方法
2017/02/09 Javascript
详解Vue-基本标签和自定义控件
2017/03/24 Javascript
Vue2几种常见开局方式详解
2017/09/09 Javascript
详解SPA中前端路由基本原理与实现方式
2018/09/12 Javascript
vue-cli项目无法用本机IP访问的解决方法
2018/09/20 Javascript
VUE v-for循环中每个item节点动态绑定不同函数的实例
2018/09/26 Javascript
react中使用css的7中方式(最全总结)
2019/02/11 Javascript
layer设置maxWidth及maxHeight解决方案
2019/07/26 Javascript
Vue.js组件使用props传递数据的方法
2019/10/19 Javascript
原生javascript单例模式的应用实例分析
2020/02/23 Javascript
JS实现简易留言板(节点操作)
2020/03/16 Javascript
Vue如何将页面导出成PDF文件
2020/08/17 Javascript
巧用Python装饰器 免去调用父类构造函数的麻烦
2012/05/18 Python
python实现汉诺塔方法汇总
2016/07/25 Python
浅谈pandas中shift和diff函数关系
2018/04/08 Python
pygame游戏之旅 创建游戏窗口界面
2018/11/20 Python
python_array[0][0]与array[0,0]的区别详解
2020/02/18 Python
护理中职生求职信范文
2014/02/24 职场文书
党员大会主持词
2014/04/02 职场文书
小学生志愿者活动方案
2014/08/23 职场文书
干部作风整顿个人剖析材料
2014/10/06 职场文书
写给老婆的保证书
2015/02/27 职场文书
学校财务管理制度
2015/08/04 职场文书