我正在制作一个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。
帮助?
答案 0 :(得分:0)
您是否尝试更改setcookie(..)
行?
比如设置cookie而不指定域或设置全局域
我认为“admin.php”开头的一些var_dump($_COOKIE)
可以提供帮助。
答案 1 :(得分:0)
也许有人可以解释原因......
我更改了我的网址“l”上的限制变量“lim”,这就产生了不同。
cookie无需编写和阅读。我忽略了为什么,不知何故,当URL读取page.php?l = 10时,$ _GET命令被跳过。
我将其更改为page.php?lim = 10,现在它的工作方式与第一台服务器上的相同。
任何关于为什么会受到赞赏的评论。