PHP:记住我,保持登录状态不起作用

时间:2014-10-17 11:33:15

标签: php session cookies remember-me stay-logged-in

在我的PHP项目中,我想添加一个用户记住我 checkbox,以便每个人都可以选择保持登录状态:

到现在为止,我正常登录:

public function loginUser($psMail, $psPwd, $pnRememberMe = 0) {
   // Check credentials and so on
   // If mail and password matches
   if(CREDENTIALS OKAY) {
      $_SESSION["username"] = "foo";
      $lnExpire = time() + 3600 * 24 * 60;
      setcookie("remember", base64_encode(USERID), $lnExpire);
      setcookie("rememberToken", md5(SOMESTUFF), $lnExpire);
   }
}

当我登录时,我可以看到创建的cookie变量:

print_r($_COOKIE);

现在我尝试使用我的注销功能离开网站:

// Unset the session variables
$_SESSION = array();
// Destroy the session.
session_destroy();

但现在,当我在登陆页面时,还有我的饼干消失了吗? 这可能是因为我的会话网站设置?

ini_set("session.use_only_cookies", "1");
ini_set("session.use_trans_sid", "0");

2 个答案:

答案 0 :(得分:0)

php function setcookie有第四个参数路径,来自文档“服务器上可以使用cookie的路径”。默认情况下,它将路径设置为实际目录。尝试设置“/”然后它将适用于所有域。 http://php.net/manual/en/function.setcookie.php

答案 1 :(得分:0)

试试这段代码,希望它适合你

 if(count($_POST>0) && isset($_POST['checkbox']))
        {
            setcookie('name',$_POST['uname'],time()+3600);
            setcookie('password',$_POST['pw'],time()+3600);
        }
    elseif(count($_POST)>0)
        {

          setcookie('name','',time()-3600);
          setcookie('password','',time()-3600);
        }
          if(count($_POST)>0 && $_POST['uname']!="" && $_POST['password']!="")
         {
          if(isset($_COOKIE['name']) && isset($_COOKIE['password']))
         {

             echo $_COOKIE['name'];
            echo $_COOKIE['password'];

        }

这里的登录详细代码.....