现在我正在搞乱代码。我是PHP的新编码。我想学习cookie,我认为当他们第一次来到我的网站后5秒钟之后重定向这个人会很酷,但是下次不再这样做但只是立即重定向他们。我虽然可以使用cookies,但它不适合我。能否帮我找出我的代码有什么问题。
<?php
$checker_name = "redirect_check";
$checker_value = "0";
setcookie($checker_name, $checker_value, time() + (86400 * 30), '/');
if(!isset($_COOKIE[$checker_name])) {
print 'Cookie Not Found';
} else {
if($_COOKIE[$checker_name] == "0") {
print 'Please Wait';
unset($_COOKIE[$checker_name]);
setcookie($checker_name, '1', time() + (86400 * 30), '/');
header( "refresh:5;url=http://www.cubedsoftware.com/home" );
die();
} else {
header('Location: home');
die();
}} ?>
答案 0 :(得分:0)
设置cookie时,它将与HTTP响应一起发送到浏览器。然后,浏览器将包含cookie以及每个新的HTTP请求到该域。
$_COOKIE
超全球将包含从浏览器发送的任何内容。由于在执行以下行时没有发出HTTP请求:
if(!isset($_COOKIE[$checker_name])) {
$_COOKIE
超全球将为空。
而不是在找不到cookie时打印Cookie not found
,而是应该生成一个并让用户等待5秒(根据您想要实现的目标,第一次访问者的默认行为)
if(!isset($_COOKIE[$checker_name])) {
$checker_value = 1;
setcookie($checker_name, $checker_value, time() + (86400 * 30), '/');
}
通过将$checker_value
设置为1,您可以确保下次用户不必等待
答案 1 :(得分:0)
您无法在php的同一页面设置和检查Cookie。要么转到第二页才能阅读,要么必须刷新页面。
您可以在setcookie line
之前添加此行 if(!isset($_COOKIE[$checker_name]))
这使它适用于刷新。
如果您没有该行,浏览器将设置新的cookie并禁用阅读可能性
但是如果你检查cookie而没有设置它,你可以阅读它。
希望这是有道理的。