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桌面中心(二) 数据库写入
Mar 11 PHP
PHP5中使用PDO连接数据库的方法
Aug 01 PHP
php.ini中date.timezone设置分析
Jul 29 PHP
分享一个PHP数据流应用的简单例子
Jun 01 PHP
SESSION信息保存在哪个文件目录下以及能够用来保存什么类型的数据
Jun 17 PHP
php+ajax做仿百度搜索下拉自动提示框(有实例)
Aug 21 PHP
PHP判断json格式是否正确的实现代码
Sep 20 PHP
PHP实现财务审核通过后返现金额到客户的功能
Jul 04 PHP
laravel自定义分页的实现案例offset()和limit()
Oct 15 PHP
php设计模式之正面模式实例分析【星际争霸游戏案例】
Mar 24 PHP
yii 框架实现按天,月,年,自定义时间段统计数据的方法分析
Apr 04 PHP
php实现将数组或对象写入到文件的方法小结【三种方法】
Apr 22 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版(4)
2006/10/09 PHP
php+mysql开源XNA 聚合程序发布 下载
2007/07/13 PHP
计算一段日期内的周末天数的php代码(星期六,星期日总和)
2009/11/12 PHP
Ajax实时验证用户名/邮箱等是否已经存在的代码打包
2011/12/01 PHP
php二维数组排序详解
2013/11/06 PHP
JavaScript 不只是脚本
2007/05/30 Javascript
jQuery解析json数据实例分析
2015/11/24 Javascript
理解javascript封装
2016/02/23 Javascript
JQuery ztree带筛选、异步加载实例讲解
2016/02/25 Javascript
JavaScript函数中的this四种绑定形式
2017/08/15 Javascript
vue使用中的内存泄漏【推荐】
2018/07/10 Javascript
使用vue-cli3 创建vue项目并配置VS Code 自动代码格式化 vue语法高亮问题
2019/05/14 Javascript
[00:26]TI7不朽珍藏III——冥界亚龙不朽展示
2017/07/15 DOTA
[36:19]2018DOTA2亚洲邀请赛 小组赛 A组加赛 Newbee vs LGD
2018/04/03 DOTA
python 实现归并排序算法
2012/06/05 Python
python socket 超时设置 errno 10054
2014/07/01 Python
Python环境变量设置方法
2016/08/28 Python
Python使用requests及BeautifulSoup构建爬虫实例代码
2018/01/24 Python
PyQt5每天必学之QSplitter实现窗口分隔
2018/04/19 Python
Python针对给定字符串求解所有子序列是否为回文序列的方法
2018/04/21 Python
Python并发之多进程的方法实例代码
2018/08/15 Python
Python hexstring-list-str之间的转换方法
2019/06/12 Python
python使用HTMLTestRunner导出饼图分析报告的方法
2019/12/30 Python
pytorch 实现查看网络中的参数
2020/01/06 Python
Python 日期时间datetime 加一天,减一天,加减一小时一分钟,加减一年
2020/04/16 Python
Pythonic版二分查找实现过程原理解析
2020/08/11 Python
Python 多线程C段扫描、检测 Ping扫描脚本的实现
2020/09/03 Python
基于CSS3的animation属性实现微信拍一拍动画效果
2020/06/22 HTML / CSS
ALDO美国官网:加拿大女鞋品牌
2018/12/28 全球购物
Fossil美国官网:化石手表、手袋、首饰及配饰
2019/02/17 全球购物
介绍下WebSphere的安全性
2013/01/31 面试题
函授毕业生自我鉴定
2013/11/06 职场文书
《陋室铭》教学反思
2014/02/26 职场文书
幼儿园小班评语
2014/04/18 职场文书
五一晚会主持词
2015/07/01 职场文书
分家协议书范本
2016/03/22 职场文书