检查cookie会导致PHP出错

时间:2014-04-17 06:12:31

标签: php cookies setcookie

我尝试创建一个系统,检查您之前是否访问过该网站,或者您是否是通过使用PHP编写的Cookie新手。

代码:

<?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

2 个答案:

答案 0 :(得分:0)

似乎代码中没有错误。在您的错误消息中,&#34;注意:未定义的索引:fun&#34;。但是在你的代码中,我并没有看到&#34; fun&#34;索引。

我们有两种检查cookie存在的方法

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

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

答案 1 :(得分:0)

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

您的错误:

setcookie(&#34; cookie&#34;,&#34; cookie_is_set&#34; ,);

根据手册

http://www.php.net/manual/en/function.setcookie.php

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

你可以传递一个名字&amp;字符串值和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将代码放入控制台,则会打印消息"Welcome to this site!"。如果将其放入php文件中也会发生同样的情况,例如。 index.php,但在后续刷新时,将显示消息"You have visited before"