-1

我在用户登录/注册时为他们设置了 COOKIE 和 SESSION。一个 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 变量时,它的值总是比实际值小一。SESSION 还可以。我究竟做错了什么?可能是什么问题呢。我创建了另一个 page.php 来回显 SESSION 和 COOKIE 变量,它们在那里都是正确的。谢谢。

4

2 回答 2

5

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

cookie 的工作方式是将您在 cookie 中设置的数据发送到浏览器以将其保存到本地 PC。下次您的浏览器连接到服务器时,浏览器会在 $_COOKIE 数组中将其提供给您的页面。

因此,在设置后立即使用 $_COOKIE 将不起作用。

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

于 2012-08-27T17:57:47.487 回答
1

$_COOKIE包含在请求中发送的 cookie。呼叫setcookie()不会改变$_COOKIE——直到他们发送下一个请求。您正在看到最后一个请求的 cookie。;)

于 2012-08-27T17:56:00.010 回答