在每个页面上,我都设置了一个 cookie 来为与该会话对应的标题按钮着色。
问题是,当我第一次在不同的部分打开页面时,cookie 仍然是旧的,彩色按钮也是如此。
然后,如果我再次单击同一按钮,则 cookie 会被正确设置。为什么?
这是我的代码:
<?php
include $_SERVER['PERCORSO_GLOBALS'];
$pagelevel = '1';
require_once ROOT_DIR.'/administrator/flock/session_users.php';
setcookie('lng', 'it');
?>
<head>
...
</head>
<body>
<?php
$currentpage = basename(__FILE__);
function colorButtonHeader($section){
if(isset($_COOKIE['lng'])){
if($_COOKIE['lng'] == $section){
echo "buttonon";
}
}else{
echo 'Error';
die($refresh);
}
}
?>
<div id="button">
<ul>
<li><a href=<?=$index_admin?>><span class="<?php colorButtonHeader('home') ?>">HOME</span></a></li>
<li><a href=<?=$italiano?>><span class="<?php colorButtonHeader('it') ?>">ITALIANO</span></a></li>
<li><a href=<?=$tedesco?>><span class="<?php colorButtonHeader('de') ?>">DEUTSCH</span></a></li>
<li><a href=<?=$francese?>><span class="<?php colorButtonHeader('fr') ?>">FRANÇAIS</span></a></li>
</ul>
</div>
?>
<div id="content">
...
</div>
</body>
</html>
Read 文档 http://php.net/manual/en/function.setcookie.php:
设置 cookie 后,即可访问它们在下一页加载时与 $_COOKIE 或 $HTTP_COOKIE_VARS 数组。请注意,超全局变量(如 $_COOKIE)在 PHP 4.1.0 中可用。 Cookie 值也存在于 $_REQUEST 中。
当你使用setcookie()
,您正在设置 cookie,但是$_COOKIE
数组仅包含现有的cookie(它是在页面加载时创建的)。
改为这样做:
setcookie('lng', 'it');
$_COOKIE["lng"] = "it";
或者简单地重定向到页面本身(header("Location: ".$_SERVER["PHP_SELF"]);
) 第一次设置 cookie 时。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)