PHP忽略c​​ookie

时间:2017-02-01 08:10:39

标签: php cookies

我正在制作一个mysqli查询,其限制是通过$ _COOKIE设置的。

它的工作方式是我发送带有URL的查询,PHP将其转换为cookie,这样用户就不会看到其URL的任何变化。

然后PHP读取cookie并进行查询,然后清除cookie,以便用户不会对其他查询产生混淆限制。

它工作正常,直到我不得不更换服务器,从一个托管服务提供商到另一个托管服务提供商,现在它无法工作,我已经建立在这种机制上。

我猜测可能PHP版本很重要或某些php.ini配置不同使原始服务器工作,但不是第二个。可悲的是,我不能在第一个完成项目。有任何线索或建议吗?

以下是代码:

// GET LIMIT, PLACE IT ON A COOKIE
if (isset($_GET['l'])) {
    $cookie_name = "limit";
    $cookie_value = $_GET['l'];
    setcookie($cookie_name, $cookie_value, time() + (86400 * 1), "/bk"); // 86400 = 1 day
    header('Location:admin.php');
    die;
}

然后,在“admin.php”中:

// GET COOKIE VALUE, DELETE COOKIE
if(isset($_COOKIE['limit'])) {
    $limit = $_COOKIE['limit'];
    setcookie("limit", '', time() -3600, "/bk"); 
} else {
    $limit = 0;
}

然后我查询。

在最后一台服务器中,例如,如果限制为10 - 在第二个代码块结束时,$ limit将等于10 - 但在这个新服务器中,$ limit为0.我做了一些测试,并且第二个如果正在工作,它会被触发,但是在if,$ limit的结尾等于0。

帮助?

2 个答案:

答案 0 :(得分:0)

您是否尝试更改setcookie(..)行?

比如设置cookie而不指定域或设置全局域

我认为“admin.php”开头的一些var_dump($_COOKIE)可以提供帮助。

答案 1 :(得分:0)

也许有人可以解释原因......

我更改了我的网址“l”上的限制变量“lim”,这就产生了不同。

cookie无需编写和阅读。我忽略了为什么,不知何故,当URL读取page.php?l = 10时,$ _GET命令被跳过。

我将其更改为page.php?lim = 10,现在它的工作方式与第一台服务器上的相同。

任何关于为什么会受到赞赏的评论。