你能否告诉我为什么PHP和Javascript版本都不能删除名为" t"?
的脚本的cookie目标(没有httponly,并且是通过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>";
?>
答案 0 :(得分:0)
我指向http://ca3.php.net/manual/en/function.setcookie.php,特别是那些说:“expire:Cookie过期的时间。这是一个Unix时间戳,所以是自纪元以来的秒数。”所以你不能给它一个负值,以及说:“如果设置为0,或者省略,那么cookie将在会话结束时到期。”
只需使用setcookie("t", "", false)
即可。现在,对于浏览器向服务器发出的下一个请求,该cookie未被设置(就像真正的页面加载或ajax请求一样)。也就是说,cookie仅在HTTP请求阶段相关,除了设置服务器在多个请求中需要知道的值之外,您不应该使用它们。不要将它们用于页面上发生的事情(因此,不要试图通过JavaScript操纵它们,这不是它们相关的地方)。