php setcookie()无法正常工作

时间:2015-12-18 18:55:00

标签: php forms setcookie

我试图了解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始终是“迟到的一个名字”。因此,我需要刷新页面,它将始终欢迎用户回来,而不是说它是第一次访问。我知道可以选择“强迫”刷新,但我不知道如何,如果这是解决方案。

问候, 伦纳特

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

2 个答案:

答案 0 :(得分:2)

您必须为每个用户保留一个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";
        }
    }
}

?>

答案 1 :(得分:1)

设置每个用户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), "/"); 

   }