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实现链结人气统计
Oct 09 PHP
php制作中间带自己定义图片二维码的方法
Jan 27 PHP
php网页标题中文乱码的有效解决方法
Mar 05 PHP
Yii入门教程之Yii安装及hello world
Nov 25 PHP
PHP下载生成的csv文件及问题总结
Aug 06 PHP
php获取文件后缀的9种方法
Mar 22 PHP
php socket通信简单实现
Nov 18 PHP
yii2使用gridView实现下拉列表筛选数据
Apr 10 PHP
Windows上php5.6操作mongodb数据库示例【配置、连接、获取实例】
Feb 13 PHP
Laravel 集成微信用户登录和绑定的实现
Dec 27 PHP
php+js实现点赞功能的示例详解
Aug 07 PHP
php操作redis命令及代码实例大全
Nov 19 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
thinkphp3.2点击刷新生成验证码
2016/02/16 PHP
PHP从二维数组得到N层分类树的实现代码
2016/10/11 PHP
Laravel框架控制器的request与response用法示例
2019/09/30 PHP
js函数的引用, 关于内存的开销
2012/09/17 Javascript
jquery.bgiframe.js在IE9下提示INVALID_CHARACTER_ERR错误
2013/01/11 Javascript
在子窗口中关闭父窗口的一句代码
2013/10/21 Javascript
Extjs4实现两个GridPanel之间数据拖拽功能具体方法
2013/11/21 Javascript
jquery easyui 对于开始时间小于结束时间的判断示例
2014/03/22 Javascript
jquery 实现input输入什么div图层显示什么
2014/06/15 Javascript
js和jquery中获取非行间样式
2017/05/05 jQuery
Bootstrap弹出框(Popover)被挤压的问题小结
2017/07/11 Javascript
详解vue项目中使用token的身份验证的简单实践
2019/03/08 Javascript
微信小程序 setData 对 data数据影响问题
2019/04/18 Javascript
[05:10]2014DOTA2国际邀请赛 通往胜利之匙赛场探秘之旅
2014/07/18 DOTA
python网络编程学习笔记(六):Web客户端访问
2014/06/09 Python
python实现矩阵乘法的方法
2015/06/28 Python
python如何去除字符串中不想要的字符
2020/07/05 Python
Flask框架使用DBUtils模块连接数据库操作示例
2018/07/20 Python
Python3的高阶函数map,reduce,filter的示例详解
2019/07/23 Python
Python爬虫:url中带字典列表参数的编码转换方法
2019/08/21 Python
window7下的python2.7版本和python3.5版本的opencv-python安装过程
2019/10/24 Python
Django框架表单操作实例分析
2019/11/04 Python
mac在matplotlib中显示中文的操作方法
2020/03/06 Python
Html5画布_动力节点Java学院整理
2017/07/13 HTML / CSS
HTML5表格_动力节点Java学院整理
2017/07/11 HTML / CSS
全球领先的各类汽车配件零售商:Advance Auto Parts
2016/08/26 全球购物
家长评语大全
2014/01/22 职场文书
新品发布会主持词
2014/04/02 职场文书
《长征》教学反思
2014/04/27 职场文书
企业指导教师评语
2014/04/28 职场文书
阳光体育活动实施方案
2014/05/25 职场文书
市场营销专业应届生自荐信
2014/06/19 职场文书
双拥工作宣传标语
2014/06/26 职场文书
降价通知函
2015/04/23 职场文书
股东合作协议书模板2篇
2019/11/05 职场文书
Vue全局事件总线你了解吗
2022/02/24 Vue.js