我有此页面,该页面设置cookie并在您选中复选框时回显字符串。字符串可以正确打印,但cookie从未设置,我也不知道为什么。
<form action="<?php echo $_SERVER['PHP_SELF'] ?>" method="post">
<label for="checkbox">Option 1:</label>
<input type="checkbox" name="checkbox" id="checkbox"><br>
<input type="submit" name="submit" value="Submit">
</form>
<?php
if (isset($_POST['checkbox'])) {
setcookie("cookie", "on", time()+3600*24);
echo "You checked the checkbox and a cookie was set with a value of:<br>";
}
else {
setcookie("cookie", "off", time()+3600*24);
echo "You didn't check the checkbox and a cookie was set with a value of:<br>";
}
echo $_COOKIE['cookie'];
?>
有谁知道为什么上面的代码不起作用?
PHP超全局变量在脚本启动时填充,然后在脚本生命周期内不再被PHP修改或触及。这意味着$_COOKIE
代表在启动脚本的http请求中发送到服务器的cookie。它不会显示您在脚本有效期内添加/更改/删除的任何cookie。这些更改将仅在NEXT请求中显示。
唯一的例外是$_SESSION
,当您调用时会填充它session_start()
。
如果您需要立即将这些值包含在$ _COOKIE中,则必须手动添加它们,例如
setcookie('cookie', $value, ....);
$_COOKIE['cookie'] = $value;
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句