0

Can you please tell me why both the PHP and Javascript versions can't delete the cookie target of the script named "t"?

(no httponly, and has been created via js btw)

<?php
    include('functions.php');
    sec_session_start();
    $lang = check_lang();
    include("../config/lang/".$lang.".php");

    // Unset all session values
    $_SESSION = array();

    // get session parameters 
    $params = session_get_cookie_params();

    // Delete the actual cookie.
    setcookie(session_name(), '', time() - 42000, $params["path"], $params["domain"], $params["secure"], $params["httponly"]);
    setcookie('t',"",-3600); //<-- this one doesn't work)

    // Destroy session
    session_destroy();

    echo "<script language='javascript'>
        function del_cookie(name) {
            document.cookie = name + '=; expires=Thu, 01-Jan-70 00:00:01 GMT;';
        } 
        del_cookie('t'); //<-- this one neither.
        </script>
        <h1>$l[logout_ok]</h1>";
?>
4

1 回答 1

0

我指给你http://ca3.php.net/manual/en/function.setcookie.php,特别是说:“过期:cookie过期的时间。这是一个Unix时间戳,所以以秒为单位从那个时代开始。” 所以你不能给它一个负值,以及说:“如果设置为 0,或者省略,cookie 将在会话结束时过期。”

只需使用setcookie("t", "", false),就完成了。现在,对于浏览器向服务器发出的下一个请求(作为真正的页面加载或 ajax 请求),cookie 未设置。也就是说,cookie 仅在 HTTP 请求阶段相关,除了设置服务器需要跨多个请求了解的值之外,您不应该使用它们。不要将它们用于页面上发生的事情(因此,不要尝试通过 JavaScript 操作它们,这与它们无关)。

于 2013-05-15T00:39:45.413 回答