当我们登录网站管理后台的时候,会有提示说记住登录状态,记住我等这样的提示,这个选项有什么用呢?如果选中了记登录状态后,下次在浏览这个网站后 台时就不用在填写用户名和密码了,在去登录了。下面写了一小代码,简单说明一下,自动登录的思想。方法不止一个,下面说一下我的想法。

一,用户登录的check

//检查用户是否登录

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");
          }
      }
}

关于$ref_url简单解释一下,假如:用户A访问b.php,但是A用户没有登录,跳转到登录页面login.php,在登录页面填完用户和密 码后,确定后又跳转到b.php这个页面,而不是跳转一个默认的页面main_user.php。因为b.php是用户A想去的那个页面,所以用户体验会 好一点。

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

为什么要这样做呢,因为如果有别人用你的电脑的话,他们有可能会浏览到你的个人隐私,所以当用户特意点了退出时,最好是把记录登录状态取消掉。

//退出登录
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);
   }
}

最新文章

  1. 对抗密码破解 —— Web 前端慢 Hash
  2. 多线程 or 多进程?[转]
  3. spring mvc 和 velocity整合
  4. iOS平台XML解析类库对比和安装说明
  5. css 射线实现方法
  6. window下手动搭建 PHP+Nginx+Mysql(转)
  7. Android 读取txt文件并以utf-8格式转换成字符串
  8. USB-CSW之旅
  9. hdu4741
  10. oracle批量插入数据
  11. System.InvalidCastException: 无法将类型为“Microsoft.Office.Interop.Word.ApplicationClass”的 COM 对象强制转换为接口类型“Microsoft.Office.Interop.Word._Application”。
  12. Android Button常用法
  13. python基础day3
  14. js限制字符串长度,超出的部分补...
  15. Linux 下的 Docker 安装与使用
  16. Java 控制类的引用类型,合理使用内存
  17. 为什么找程序员一定要看他的 GitHub
  18. ACM的fflush(stdin)的问题
  19. Python3使用setuptools
  20. java读取和写入浏览器Cookies

热门文章

  1. CSS3动画之旋转魔方盒
  2. FTP进行上传下载文件
  3. Ubuntu 安装 pecl_http
  4. 更有效率的使用 Visual Studio - 快捷键
  5. 利用ICommand和ITool重写Arcengine中控件的事件
  6. EXW_FOB_CIF_CFR 外贸报价方式&条款之间的区别与联系
  7. 优盘文件系统(FOR C)
  8. jQuery之位置
  9. UESTC_秋实大哥与花 2015 UESTC Training for Data Structures<Problem B>
  10. N-Queens 解答