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中DOMDocument简单用法示例代码(XML创建、添加、删除、修改)
Dec 19 PHP
PHP的博客ping服务代码
Feb 04 PHP
PHP分多步骤填写发布信息的简单方法实例代码
Sep 23 PHP
php堆排序实现原理与应用方法
Jan 03 PHP
php短址转换实现方法
Feb 25 PHP
如何在HTML 中嵌入 PHP 代码
May 13 PHP
php类的定义与继承用法实例
Jul 07 PHP
php实现购物车功能(上)
Jul 23 PHP
php实现的后台表格分页功能示例
Oct 23 PHP
php处理多图上传压缩代码功能
Jun 13 PHP
Yii2.0框架实现带分页的多条件搜索功能示例
Feb 20 PHP
laravel框架数据库配置及操作数据库示例
Oct 10 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获取后台Job管理的实现代码
2011/06/10 PHP
php传值赋值和传地址赋值用法实例分析
2015/06/20 PHP
利用PHPExcel实现Excel文件的写入和读取
2017/04/26 PHP
php通过各种函数判断0和空
2020/07/04 PHP
PHP操作路由器实现方法示例
2019/04/27 PHP
50个优秀经典PHP算法大集合 附源码
2020/08/26 PHP
seajs1.3.0源码解析之module依赖有序加载
2012/11/07 Javascript
JavaScript数据类型详解
2015/04/01 Javascript
jQuery实现checkbox全选的方法
2015/06/10 Javascript
JavaScript中setMonth()方法的使用详解
2015/06/11 Javascript
AngularJS 与百度地图的结合实例
2016/10/20 Javascript
详解Vue中添加过渡效果
2017/03/20 Javascript
js保留两位小数方法总结
2018/01/31 Javascript
微信小程序实现留言板
2018/10/31 Javascript
JS获取月的第几周和年的第几周实例代码
2018/12/05 Javascript
如何解决js函数防抖、节流出现的问题
2019/06/17 Javascript
swiper实现异形轮播效果
2019/11/28 Javascript
在Vue中使用antv的示例代码
2020/06/29 Javascript
讲解python参数和作用域的使用
2013/11/01 Python
python装饰器使用方法实例
2013/11/21 Python
简单实现python爬虫功能
2015/12/31 Python
Python实现利用最大公约数求三个正整数的最小公倍数示例
2017/09/30 Python
利用python为运维人员写一个监控脚本
2018/03/25 Python
Python代码实现http/https代理服务器的脚本
2019/08/12 Python
Win10+GPU版Pytorch1.1安装的安装步骤
2019/09/27 Python
实现Python3数组旋转的3种算法实例
2020/09/16 Python
Python常用GUI框架原理解析汇总
2020/12/07 Python
一款基于css3和jquery实现的动画显示弹出层按钮教程
2015/01/04 HTML / CSS
CSS3田字格列表的样式编写方法
2018/11/22 HTML / CSS
中专三年学习的个人自我评价
2013/12/12 职场文书
音乐教学反思
2014/02/02 职场文书
中专生自我鉴定范文
2014/02/02 职场文书
三八红旗手先进事迹材料
2014/05/13 职场文书
计算机网络专业自荐信
2014/07/04 职场文书
2014年学生党支部工作总结
2014/12/20 职场文书
关于Vue Router的10条高级技巧总结
2021/05/06 Vue.js