【问题标题】:Using Session and Cookies together for remember me一起使用 Session 和 Cookies 来记住我
【发布时间】:2015-10-08 04:45:55
【问题描述】:

在我的登录页面中,我同时使用 Session 和 Cookies,通常登录的会话和记住我时的 cookie 被选中。我创建会话或设置 cookie 的代码是:

if(isset($_POST['login'])){ 
$username = $_POST['user_login'];
$password = $_POST['password_login'];
$stmt = $db->prepare("SELECT * FROM userss WHERE username = :username AND password = :password");
$stmt->execute(array(':username'=>$username,':password'=>$password));
$row = $stmt->fetch(PDO::FETCH_ASSOC);
$user_db = $row['username'];
$pass_db = $row['password'];
if($username == $user_db && $password == $pass_db) {  
    $_SESSION['username']=$username;
    if ($_POST['rememberme']!=NULL) {
        setcookie('username', $username,time()+31556926);
    }
    header("Location:main.php");
}

然后在任何页面上创建用户功能,我正在调用会话或 cookie,如下所示:

if(isset($_COOKIE['username'])||isset($_SESSION['username'])) {
    $username = $_COOKIE['username'];
    $username = $_SESSION['username'];
}

现在我的问题是:

  1. 即使在“记住我”被选中时使用了会话而不是 cookie,我还是通过退出浏览器对其进行了测试。我不知道代码哪里出错了。
  2. 在第二个代码中if(isset($_COOKIE['username'])||isset($_SESSION['username'])) { 是正确的,但我不确定如何为这两种不同情况定义用户名 $username = $_COOKIE['username']; 给了我未定义的索引用户名。可能是我设置 cookie 的方式出了问题。

【问题讨论】:

  • 几种调试方法 1) 首先检查是否是指针进入您检查 $_POST['rememberme']!=null 的条件内部 2) 尝试为 cookie 使用不同的关键字

标签: php session cookies


【解决方案1】:

这里替换

if (isset($_POST['rememberme'])) {
setcookie('username', $username,time()+31556926);
}

在用户函数中

if(isset($_SESSION['username']) {
      $username = $_SESSION['username'];
    }
 else if(isset($_COOKIE['username']){
      $username = $_COOKIE['username'];
    }
 else
    {
     //invalid ---
    }

【讨论】:

    猜你喜欢
    • 2010-12-25
    • 1970-01-01
    • 2012-06-04
    • 2011-05-26
    • 2019-09-07
    • 1970-01-01
    • 2014-01-22
    • 2013-01-26
    • 2023-03-11
    相关资源
    最近更新 更多