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 相关文章推荐
第八节--访问方式
Nov 16 PHP
关于PHP自动判断字符集并转码的详解
Jun 26 PHP
浅析51个PHP处理字符串的函数
Aug 02 PHP
国产PHP开发框架myqee新手快速入门教程
Jul 14 PHP
PHP的拦截器实例分析
Nov 03 PHP
php常用hash加密函数
Nov 22 PHP
php生成图片缩略图的方法
Apr 07 PHP
给WordPress中的留言加上楼层号的PHP代码实例
Dec 14 PHP
PHP对象链式操作实现原理分析
Oct 09 PHP
PHP实现在对象之外访问其私有属性private及保护属性protected的方法
Nov 20 PHP
php设计模式之装饰模式应用案例详解
Jun 17 PHP
浅析PHP echo 和 print 语句
Jun 30 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扩展库对mysql的操作
2013/07/03 PHP
THINKPHP2.0到3.0有哪些改进之处
2015/01/04 PHP
php根据一个给定范围和步进生成数组的方法
2015/06/19 PHP
PHP接口继承及接口多继承原理与实现方法详解
2017/10/18 PHP
PHP校验15位和18位身份证号的类封装
2018/11/07 PHP
QQ邮箱的一个文本编辑器代码
2007/03/14 Javascript
setAttribute 与 class冲突解决
2008/02/17 Javascript
几个常用的JavaScript字符串处理函数 - split()、join()、substring()和indexOf()
2009/06/02 Javascript
运用jQuery定时器的原理实现banner图片切换
2014/10/22 Javascript
利用Angular.js限制textarea输入的字数
2016/10/20 Javascript
利用jQuery.Validate异步验证用户名是否存在(推荐)
2016/12/09 Javascript
原生JS与jQuery编写简单选项卡
2017/10/30 jQuery
Vue的elementUI实现自定义主题方法
2018/02/23 Javascript
jQuery实现监听下拉框选中内容发生改变操作示例
2018/07/13 jQuery
js比较两个单独的数组或对象是否相等的实例代码
2019/04/28 Javascript
Vue实现图片与文字混输效果
2019/12/04 Javascript
vue 图片裁剪上传组件的实现
2020/11/12 Javascript
[04:13]2014DOTA2国际邀请赛 专访DC目前形势不容乐观
2014/07/12 DOTA
Python实现备份文件实例
2014/09/16 Python
在Python中测试访问同一数据的竞争条件的方法
2015/04/23 Python
python在不同层级目录import模块的方法
2016/01/31 Python
Python使用functools模块中的partial函数生成偏函数
2016/07/02 Python
Python实现简单网页图片抓取完整代码实例
2017/12/15 Python
python实现连续图文识别
2018/12/18 Python
浅谈Python中函数的定义及其调用方法
2019/07/19 Python
python调用Matplotlib绘制分布点图
2019/10/18 Python
python爬虫爬取幽默笑话网站
2019/10/24 Python
python日期与时间戳的各种转换示例
2020/02/12 Python
Pytorch中.new()的作用详解
2020/02/18 Python
python导入库的具体方法
2020/06/18 Python
利用python进行文件操作
2020/12/04 Python
上学迟到的检讨书
2014/01/11 职场文书
交通安全责任书范本
2014/07/24 职场文书
会员活动策划方案
2014/08/19 职场文书
党支部书记岗位职责
2015/02/15 职场文书
2015年小学生国庆节演讲稿
2015/07/30 职场文书