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 相关文章推荐
使用 php4 加速 web 传输
Oct 09 PHP
整理的一些实用WordPress后台MySQL操作命令
Jan 07 PHP
php.ini修改php上传文件大小限制的方法详解
Jun 17 PHP
PHP中单引号与双引号的区别分析
Aug 19 PHP
PHP实现的多彩标签效果代码分享
Aug 21 PHP
php给图片添加文字水印方法汇总
Aug 27 PHP
PHP数组函数知识汇总
May 12 PHP
PHP实现动态压缩js与css文件的方法
May 02 PHP
thinkphp集成前端脚手架Vue-cli的教程图解
Aug 30 PHP
解决laravel资源加载路径设置的问题
Oct 14 PHP
设定php简写功能的方法
Nov 28 PHP
php实现快速对二维数组某一列进行组装的方法小结
Dec 04 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中mysqli_affected_rows作用行数返回值分析
2014/12/26 PHP
在php和MySql中计算时间差的方法详解
2015/03/27 PHP
浅析PHP7的多进程及实例源码
2019/04/14 PHP
禁止JQuery中的load方法装载IE缓存中文件的方法
2009/09/11 Javascript
document.getElementById为空或不是对象的解决方法
2010/01/24 Javascript
排序算法的javascript实现与讲解(99js手记)
2014/09/28 Javascript
javascript实现点击按钮弹出一个可关闭层窗口同时网页背景变灰的方法
2015/05/13 Javascript
小白谈谈对JS原型链的理解
2016/05/03 Javascript
第十篇BootStrap轮播插件使用详解
2016/06/21 Javascript
jQuery3.0中的buildFragment私有函数详解
2016/08/16 Javascript
JS实现简单易用的手机端浮动窗口显示效果
2016/09/07 Javascript
js继承实现方法详解
2016/12/16 Javascript
详解layui中的树形关于取值传值问题
2018/01/16 Javascript
vue之将echart封装为组件
2018/06/02 Javascript
小程序转发探索示例
2019/02/19 Javascript
详解bootstrap-fileinput文件上传控件的亲身实践
2019/03/21 Javascript
JS实现拖拽元素时与另一元素碰撞检测
2020/08/27 Javascript
Python修改MP3文件的方法
2015/06/15 Python
Python实现识别手写数字大纲
2018/01/29 Python
python中使用psutil查看内存占用的情况
2018/06/11 Python
对pandas中Series的map函数详解
2018/07/25 Python
Python设计模式之迭代器模式原理与用法实例分析
2019/01/10 Python
python opencv调用笔记本摄像头
2019/08/28 Python
django删除表重建的实现方法
2019/08/28 Python
python 实现让字典的value 成为列表
2019/12/16 Python
python爬虫模块URL管理器模块用法解析
2020/02/03 Python
基于python3生成标签云代码解析
2020/02/18 Python
python3让print输出不换行的方法
2020/08/24 Python
美国非常受欢迎的Spa品牌:Bliss必列斯
2018/04/10 全球购物
网络信息管理员岗位职责
2014/01/05 职场文书
销售行政专员岗位职责
2014/06/10 职场文书
2014年国庆节演讲稿精选范文1500字
2014/09/25 职场文书
内乡县衙导游词
2015/02/05 职场文书
2015年新农合工作总结
2015/03/30 职场文书
《追风筝的人》:人心中的成见是座大山,但请不忘初心
2019/11/15 职场文书
Html5新增了哪些功能
2021/04/16 HTML / CSS