检查Cookie会导致PHP中出现错误

检查Cookie会导致PHP中出现错误,php,cookies,setcookie,Php,Cookies,Setcookie,我试图创建一个系统,通过PHP编写的cookies检查您是否访问过该站点,或者您是否是新用户 守则: <?php if(isset($_COOKIE['cookie'])) { //Checking for cookie, this is line 2 echo "You have visited before"; }else{ //If there is no coo

我试图创建一个系统,通过PHP编写的cookies检查您是否访问过该站点,或者您是否是新用户

守则:

<?php
if(isset($_COOKIE['cookie'])) {                 //Checking for cookie, this is line 2
    echo "You have visited before";
}else{                                          //If there is no cookie
    echo "Welcome to this site!";
    setcookie("cookie", "cookie_is_set", );     //Setting cookie because user has visited
};
当我运行此代码时,出现以下错误:

注意:第2行的C:\Apache24\htdocs\cookietest\index.php中的未定义索引:cookie

在看过其他人的代码后,我怀疑这是由于我的PHP中的错误或其他原因造成的。。。那么我应该禁用它还是什么,以及如何禁用?还有其他问题吗


感谢您提前回复,San Bergam的代码中似乎没有错误。在错误消息中,请注意:未定义索引:fun。但在你的代码中,我看不到有趣的索引

我们有两种方法来检查cookie是否存在

if(isset($_COOKIE['cookie'])){
    $cookie = $_COOKIE['cookie'];
}
else{
    // Cookie is not set
}


您的代码存在与索引“fun”无关的问题。如果在Windows上进行测试,结果很可能缓存在浏览器中,也可能被操作系统缓存。在Windows上测试时,我经常遇到这个问题

您的错误:

setcookiecookie,cookie是SetCookie

根据手册

bool setcookie string$name[,string$value[,int$expire=0[,string$path[,string$domain[,bool$secure=false[,bool$httponly=false][

您可以传递名称和字符串值,cookie将在会话结束时过期,通常在浏览器关闭时过期,或者在浏览打开时手动清除缓存

if(isset($_COOKIE['cookie'])) {
    echo "You have visited before";
} else {
    setcookie("cookie", "cookie_is_set", 0);
    echo "Welcome to this site!";
}

如果您在windows或*nix中使用php-a将代码放入控制台,则会显示欢迎访问此站点的消息!将被打印出来。同样的情况也会发生,如果你把它放到一个php文件中,例如index.php,但是在随后的刷新中,你之前访问过的消息会显示出来。

如果你显式地将$_COOKIE['COOKIE']设置为某物,然后测试如果设置了,你会得到错误吗?我想你可能看到了错误的代码,没有['fun']代码中引用了索引。请在San Bergam处输入正确的代码
if(isset($_COOKIE['cookie'])) {
    echo "You have visited before";
} else {
    setcookie("cookie", "cookie_is_set", 0);
    echo "Welcome to this site!";
}