使用PHP COOKIE

时间:2012-08-27 17:52:07

标签: php mysql

我在登录/注册时为用户设置了COOKIE和SESSION。更多可用性的会议和持久性的COOKIE。当新用户注册我的网站时,我想将其重定向到他们的个人资料。我们需要在注册后立即创建一个SESSION和COOKIE变量。这是我的解决方案:

    $query2= "INSERT INTO users (fname, lname, email, password) VALUES   
 ('$fname', '$lname', '$email', '$password1')";
    mysqli_query($connect, $query2)
        or die('error with query');
    session_start();
    $query3= "SELECT * FROM users where email= '".$email."' AND password= 
'".$password1."'";
    $result2= mysqli_query($connect, $query3);
    $row= mysqli_fetch_array($result2);
    $_SESSION['id'] = $row['user_id']; 
    setcookie('id', $row['user_id']);
            echo $_SESSION['id'];
            echo $_COOKIE['id'];
    echo "You are now logged in.";

我首先插入新的数据行。然后我记得它创建了SESSION和COOKIE变量。但是,这是我的问题,每当我回显COOKIE变量时,它的值总是小于实际值应该是的值。会话虽然没问题。我究竟做错了什么?可能是什么问题呢。我创建了另一个page.php来回显出SESSION和COOKIE变量,它们都是正确的。感谢。

2 个答案:

答案 0 :(得分:5)

使用setcookie设置的cookie值不会显示在同一页面上。

Cookie的工作方式是将您在cookie中设置的数据发送到浏览器以将其保存到本地PC。 浏览器在下次浏览器连接到服务器时,可以在$ _COOKIE数组中使用它。

因此在设置后立即使用$ _COOKIE将无效。

另一方面,在使用$ _SESSION设置会话后,可以立即使用会话。

答案 1 :(得分:1)

$_COOKIE包含请求中发送的Cookie。调用setcookie()不会更改$_COOKIE - 直到他们发送下一个请求为止。你看到了最后一个请求的cookie。 ;)