php setcookie()工作不正常

php setcookie()工作不正常,php,forms,setcookie,Php,Forms,Setcookie,我试图了解setcookie()在php中的工作原理,因此我制作了一个简单的脚本用于测试。脚本所做的唯一一件事就是请求用户名,然后为其制作cookie。当你再次输入相同的用户名时,它应该欢迎你回来。如果这是您第一次输入该用户名,它将第一次欢迎您。以下是我所做的: 这就是形式 <!DOCTYPE html> <html lang="nl"> <head> <title>XXL Computer winkel</title> </he

我试图了解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>

XXL计算机winkel
php实验室12

设置每个用户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。在
CookieFunctions.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";
        }
    }
}

?>


在为每个用户设置cookie之前,您必须更改每个用户的cookie名称,并且在每次请求时都必须检查cookie是否存在。我还没有这样做吗?如果我使用其他名称登录并刷新,我将获得新名称。我只是想让它在没有刷新的情况下工作您的场景类似于跟随第一个用户输入名称并单击提交您必须检查用户名是否已输入并显示相应的消息?尝试使用下面的回答代码。感谢您的解答!如果我将其粘贴到函数中,就会出现错误。因为$user要求提交表单。然而,我确实在我的脚本中添加了一行$_COOKIE[$COOKIE\u name]=$COOKIE\u值;现在可以在提交姓名后直接发布。问题仍然是,它总是“欢迎这个名字回来”,即使它是第一次输入。谢谢你的回复!这是有效的:-)但有一件事。如果第一次设置了一个名称(例如Giel),我也会在C:\xampp\htdocs\unit4\cookiefuncies.php的第行得到通知:未定义索引:Giel8@Lennart你说得对。:-)我没有启用警告,所以我没有得到它。我更新了代码。请再试一次。效果很好!谢谢你的宝贵帮助!:-)
<?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";
        }
    }
}

?>