Can';不要用PHP POST删除Cookie

Can';不要用PHP POST删除Cookie,php,post,cookies,Php,Post,Cookies,我正在尝试使用两个不同的POST命令设置和取消设置Cookie。我无法让它真正删除我在第一篇文章中设置的cookies if ($_POST['clockin'] == "Clock In") { $cookie_name = "timein"; $cookie_value = $id; setcookie($cookie_name, $cookie_value, time() + (86400), "/"); } if ($_POST['clockout'] ==

我正在尝试使用两个不同的POST命令设置和取消设置Cookie。我无法让它真正删除我在第一篇文章中设置的cookies

if ($_POST['clockin'] == "Clock In") {  
    $cookie_name = "timein";
    $cookie_value = $id;
    setcookie($cookie_name, $cookie_value, time() + (86400), "/");
}

if ($_POST['clockout'] == "Clock Out") {    
    if (isset($_COOKIE[$cookie_name])) {
        unset($_COOKIE[$cookie_name]);
        setcookie($cookie_name, null, -1, '/');
    }
}

您只需设置
$cookie\u name=“timein”,因此无法在第二个if语句中正确检查它以将其删除,因为它在错误的范围内。您还应该在加入请求变量之前使用
isset()
,以防止出现警告

// Set Cookie name outside if 
$cookie_name = "timein";

// Check if 'clockin' was submitted, then check the value
if (isset($_POST['clockin']) && $_POST['clockin'] == "Clock In") { 
    $cookie_value = $id;
    setcookie($cookie_name, $cookie_value, time() + (86400), "/");
}

// Check if 'clockout' was submitted, then check the value
if (isset($_POST['clockout']) && $_POST['clockout'] == "Clock Out") {    
    if (isset($_COOKIE[$cookie_name])) {
        unset($_COOKIE[$cookie_name]);
        setcookie($cookie_name, null, -1, '/');
    }
}

cookies仅在加载页面后设置。检查错误并发布与此相关的任何其他内容,例如与此相关的HTML表单。如果第一篇文章不匹配,$cookie\u name将为空。将$cookie_name=“timein”移到第一个if语句之外。@Fred ii-Cookies被设置为HTTP头的一部分,该头在加载页面之前发送,而不是在加载之后发送。这是问题的一部分解决方案,但我意识到另一部分是,当发布数据时(即单击提交按钮时),我会这样做它禁用该字段,并且实际上无法发布。现在,我试图找出如何在禁用字段之前检查它是否已发布。欢迎提出任何建议。