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下通过POST还是GET来传值
Jun 05 PHP
利用php实现禁用IE和火狐的缓存问题
Dec 03 PHP
php判断数组元素中是否存在某个字符串的方法
Jun 14 PHP
php自动获取关键字的方法
Jan 06 PHP
php实现字符串首字母转换成大写的方法
Mar 17 PHP
PHP判断JSON对象是否存在的方法(推荐)
Jul 06 PHP
PHP+jquery+CSS制作头像登录窗(仿QQ登陆)
Oct 20 PHP
记录一次排查PHP脚本执行卡住的问题
Dec 27 PHP
laravel如何开启跨域功能示例详解
Aug 31 PHP
数据结构之利用PHP实现二分搜索树
Oct 25 PHP
PHP isset empty函数相关面试题及解析
Dec 11 PHP
PHP队列场景以及实现代码实例详解
Feb 26 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进行批量任务处理不超时的解决方法
2016/07/11 PHP
关于 Laravel Redis 多个进程同时取队列问题详解
2017/12/25 PHP
PHP simplexml_load_file()函数讲解
2019/02/03 PHP
PHP删除数组中特定元素的两种方法
2019/02/28 PHP
PHP超低内存遍历目录文件和读取超大文件的方法
2019/05/01 PHP
js 判断文件类型并控制表单提交示例代码
2013/11/14 Javascript
新增加的内容是如何将div的scrollbar自动移动最下面
2014/01/02 Javascript
jQuery动态星级评分效果实现方法
2015/08/06 Javascript
jquery插件jquery.beforeafter.js实现左右拖拽分隔条对比图片的方法
2015/08/07 Javascript
jQuery焦点图插件SaySlide
2015/12/21 Javascript
JavaScript+html5 canvas绘制渐变区域完整实例
2016/01/26 Javascript
3种不同的ContextMenu右键菜单实现代码
2016/11/03 Javascript
原生js实现对Ajax的封装(仿jquery)
2017/01/22 Javascript
原生js实现类似fullpage的单页/全屏滚动
2017/01/22 Javascript
JavaScript中offsetWidth的bug及解决方法
2017/05/17 Javascript
详解angularJS动态生成的页面中ng-click无效解决办法
2017/06/19 Javascript
详解微信小程序中的页面代码中的模板的封装
2017/10/12 Javascript
Vue最新防抖方案(必看篇)
2019/10/30 Javascript
VueCli生产环境打包部署跨域失败的解决
2020/11/13 Javascript
[00:52]玛尔斯技能全介绍
2019/03/06 DOTA
深入浅析python中的多进程、多线程、协程
2016/06/22 Python
Python中模块pymysql查询结果后如何获取字段列表
2017/06/05 Python
python实现K最近邻算法
2018/01/29 Python
Django数据库表反向生成实例解析
2018/02/06 Python
原来我一直安装 Python 库的姿势都不对呀
2019/11/11 Python
Pycharm IDE的安装和使用教程详解
2020/04/30 Python
Python函数参数分类原理详解
2020/05/28 Python
Python实现LR1文法的完整实例代码
2020/10/25 Python
党员领导干部廉洁从政承诺书
2014/03/27 职场文书
入股协议书范本
2014/04/14 职场文书
小学生期末评语大全
2014/04/21 职场文书
四风问题自查自纠工作情况报告
2014/10/28 职场文书
2014年招生工作总结
2014/11/26 职场文书
营业用房租赁协议书
2014/11/26 职场文书
2016年清明节寄语
2015/12/04 职场文书
CSS3实现的水平标题菜单
2021/04/14 HTML / CSS