为什么我的PHP代码与cookie无法正常工作?

时间:2016-05-21 21:15:53

标签: php cookies

现在我正在搞乱代码。我是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();
}}   ?>

2 个答案:

答案 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而没有设置它,你可以阅读它。

希望这是有道理的。