使用PHP COOKIE

使用PHP COOKIE,php,mysql,Php,Mysql,我正在为用户登录/注册时设置COOKIE和会话。一个提高可用性的会话和一个持久性的COOKIE。当新用户注册我的网站时,我想将他们重定向到他们的个人资料。我需要在他们注册后立即创建会话和COOKIE变量。以下是我的解决方案: $query2= "INSERT INTO users (fname, lname, email, password) VALUES ('$fname', '$lname', '$email', '$password1')"; mysqli_quer

我正在为用户登录/注册时设置COOKIE和会话。一个提高可用性的会话和一个持久性的COOKIE。当新用户注册我的网站时,我想将他们重定向到他们的个人资料。我需要在他们注册后立即创建会话和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.";

我首先插入新行数据。然后我调用它来创建会话和COOKIE变量。但是,我的问题是,每当我回显COOKIE变量时,它的值总是比实际值小一个。不过这次会议还行。我做错了什么?有什么问题吗。我创建了另一个page.php来回显会话和COOKIE变量,它们在那里都是正确的。谢谢。

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

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

cookie的工作方式是将在cookie中设置的数据发送到浏览器,以便将其保存到本地pc。 下次浏览器连接到服务器时,浏览器将使$\u COOKIE数组中的页面可以使用它

因此,在设置后立即使用$\u COOKIE将不起作用


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

作为旁注,你知道有cookie编辑器,这样在这种情况下,用户可以将cookie更改为任何用户id并以他们的身份登录?如何防止这种情况发生?不要将此内容保存到cookie@IvanHušnjak cookie中应该存储什么?那么我如何为用户提供持久性呢?那么,我可以像现在这样设置它吗?然后在配置文件脚本中调用它?
$\u会话
只要浏览器打开就可以持续。它可以很好地用于配置文件重定向。您只需要
$\u COOKIE
即可进行长期用户身份验证(但不要将机密用户信息存储在COOKIE中)。谢谢您,这让您现在的身份更加清晰了。:)我很感激。