PHP 使用cookie实现记住登录状态

php使用cookie实现记住登录状态,本文用最原始的方法讲解如何实现记住登录状态,给出3个步骤和具体实现代码,需要的朋友可以参考下。

要实现记住密码自动登录的功能,我们大多数据都是利用了客户端的cookies来实现。

php制作记住密码自动登录的解决思路,其实也就是对session,cookies的操作

一、检查用户是否登录

[php]  view plain  copy
  1. <?php  
  2. // 检查用户是否登录  
  3. function checklogin() {  
  4.     if (empty ( $_SESSION ['user_info'] ))         // 检查一下session是不是为空  
  5.     {   
  6.         if (empty ( $_COOKIE ['username'] ) || empty ( $_COOKIE ['password'] ))   
  7.         {   
  8.             header ( "location:login.php?req_url=" . $_SERVER ['REQUEST_URI'] ); // 转到登录页面,记录请求的url,登录后跳转过去,用户体验好。  
  9.         }   
  10.         else  
  11.         {   
  12.             $user = getUserInfo ( $_COOKIE ['username'], $_COOKIE ['password'] ); // 去取用户的个人资料  
  13.             if (empty ( $user ))   
  14.             {   
  15.                 header ( "location:login.php?req_url=" . $_SERVER ['REQUEST_URI'] );  
  16.             }   
  17.             else {  
  18.                 $_SESSION ['user_info'] = $user// 用户名和密码对了,把用户的个人资料放到session里面  
  19.             }  
  20.         }  
  21.     }  
  22. }  
  23. ?>   

二,用户提交登录信息

[php]  view plain  copy
  1. <?php  
  2. $username = trim ( $_POST ['username'] );  
  3. $password = md5 ( trim ( $_POST ['password'] ) );  
  4. $remember = $_POST ['remember'];  
  5. $validatecode = $_POST ['validateCode'];  
  6. $ref_url = $_GET ['req_url'];  
  7.    
  8. $err_msg = '';  
  9. if ($validatecode != $_SESSION ['checksum']) {  
  10.     $err_msg = "验证码不正确";  
  11. elseif ($username == '' || $password == '') {  
  12.     $err_msg = "用户名和密码都不能为空";  
  13. else {  
  14.     $row = getUserInfo ( $username$password );  
  15.        
  16.     if (empty ( $row )) {  
  17.         $err_msg = "用户名和密码都不正确";  
  18.     } else {  
  19.         $_SESSION ['user_info'] = $row;  
  20.         if (! empty ( $remember )) { // 如果记住登陆,则记录登录状态,把用户名和加密的密码放到cookie里面  
  21.             setcookie ( "username"$username, time () + 3600 * 24 * 365 );  
  22.             setcookie ( "password"$password, time () + 3600 * 24 * 365 );  
  23.         }  
  24.         if (strpos ( $ref_url"login.php" ) === false) {  
  25.             header ( "location:" . $ref_url );  
  26.         } else {  
  27.             header ( "location:main_user.php" );  
  28.         }  
  29.     }  
  30. }  
  31. ?>   

三,当用户点退出时,清出记录登录状态

[php]  view plain  copy
  1. <?php  
  2. // 退出登录  
  3. function logout()   
  4. {  
  5.     unset ( $_SESSION ['user_info'] );  
  6.     if (! empty ( $_COOKIE ['username'] ) || ! empty ( $_COOKIE ['password'] ))   
  7.     {  
  8.         setcookie ( "username", null, time () - 3600 * 24 * 365 );  
  9.         setcookie ( "password", null, time () - 3600 * 24 * 365 );  
  10.     }  
  11. }  
  12. ?>  


四、简洁版实例
[php]  view plain  copy
  1. <?  
  2.     // 读取COOKIE的用户名和密码的值即可  
  3.     if ($_COOKIE ['uname'] != '') {  
  4.         $CKUNAME = $_COOKIE ['uname'];  
  5.     }  
  6.     if ($_COOKIE ['pwd'] != '') {  
  7.         $CKPWD = $_COOKIE ['pwd'];  
  8.     }  
  9.     echo $CKUNAME;  
  10.     echo '<br>';  
  11.     echo $CKPWD;  
  12. ?>  
  13.    
  14. <form id="form1" name="form1" method="post" action="">  
  15.     <input type="text" name="uname" id="uname" value="<?=$CKUNAME;?>" />   
  16.     <input type="password" name="pwd" id="pwd" value="<?=$CKPWD;?>" />   
  17.     <input name="remember" type="checkbox" value="1" <? if($CKUNAME!=''){?> checked="checked" <? } ?> /> 记住我!   
  18.     <input type="submit" name="button" id="button" value="登录" />  
  19. </form>  
  20.    
  21. <?  
  22.     // 登录,将用户名和密码存入到COOKIE  
  23.     if ($_POST ['button'] != '')   
  24.     {  
  25.         $uname = $_POST ['uname'];  
  26.         $pwd = $_POST ['pwd'];  
  27.            
  28.         // 如果输入的加密密码和COOKIE中不一样,那么就加密  
  29.         if ($pwd != $CKPWD) {  
  30.             $pwd = md5 ( $pwd );  
  31.         }  
  32.         $remember = $_POST ['remember'];  
  33.         if ($remember == 1) {  
  34.             setcookie ( "uname"$uname, time () + 3600 * 24 * 30 );  
  35.             setcookie ( "pwd"$pwd, time () + 3600 * 24 * 30 );  
  36.         }  
  37.     }  
  38. ?>  
  • 5
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值