php setcookie() 无法正常工作

php setcookie() not working correct

我想了解 setcookie() 在 php 中的工作原理,所以我制作了一个简单的脚本用于测试目的。该脚本所做的唯一一件事就是询问用户名,然后为其创建一个 cookie。当您再次输入相同的用户名时,它应该欢迎您回来。如果这是您第一次输入该用户名,它应该是第一次欢迎您。这是我所做的:

这是表格;

<!DOCTYPE html>
<html lang="nl">
<head>
<title>XXL Computer winkel</title>
</head>
<body>
<h3>php lab 12</h3>
<table border=0 cellpadding=0 cellspacing=0 >
<form name="orderform" action="<?php echo $_SERVER['PHP_SELF'];?>" method="post">
<tr>
<td>gebruikersnaam</td>
<td><input type="text" name="user" /></td>
<td><input type="submit" name="send" value="inloggen" /> </td>
</tr>
</form>
</table>
<?php

include ("cookiefuncties.php");

welkom();

?>
</body>
</html>

cookiefuncties.php 看起来像这样:

<?php

function welkom()
{

if(isset($_POST['user']))
{
    $cookie_value = $_POST['user'];
    $cookie_name = "gebruikersnaam";
    setcookie($cookie_name, $cookie_value, time() + (86400 * 30), "/"); 
}
if(isset($_POST['user'])&& $_COOKIE[$cookie_name] === ($_POST['user']))
    {

        echo "Welcome back " . $_COOKIE[$cookie_name] . "!";
    }
if(isset($_POST['user'])&& $_COOKIE[$cookie_name] != ($_POST['user']))
    {

        echo "Welcome " . $_COOKIE[$cookie_name] . "This is your first visit";
    }
}

?>

问题是 cookie 总是 'one name late'。因此我需要刷新页面,它总是欢迎用户回来而不是说这是第一次访问。我知道有一个 'force' 刷新的选项,但我不知道如何,如果那是解决方案。

您好, 伦纳特

ps。不要介意间距。我仍然不知道如何在这个网站上做到这一点:-(

设置每个用户 cookie 的唯一名称并检查它是否存在。

   if(isset($_POST['user']) and !empty($_POST['user']))
   {

       $user = $_POST['user'];
       // set the unique cookie name
       $cookie_name = "gebruikersnaam_$user";    
       $setCookie = true;

       if(isset($_COOKIE[$cookie_name]) and $_COOKIE[$cookie_name] = $user )
       {
           echo "Welcome Back ".$user;
       }else
       {
           echo "This is your first visit $user";
       }

       setcookie($cookie_name, $user, time() + (86400 * 30), "/"); 

   }

您必须为每个用户保留一个 cookie。只需为每个新用户设置一个值为 true 的 cookie。在您的 cookiefuncties.php 中尝试此代码:

<?php

function welkom() {

    if(isset($_POST['user'])) {
        $cookie_name = $_POST['user'];
        setcookie($cookie_name, true, time() + (86400 * 30), "/"); 
        if( isset($_COOKIE[$cookie_name]) && true == $_COOKIE[$cookie_name]) {
            echo "Welcome back " . $_POST['user'] . "!";
        } else {
            echo "Welcome " . $_POST['user'] . "This is your first visit";
        }
    }
}

?>