0

我正在尝试将下拉菜单的值保存到 cookie 中!但是cookie显示了不同的值!这是它的php代码:

if (isset($_POST['myselection'])){

$chooseone=$_POST['myselection'];
setcookie ("chosenlang",$chooseone, $t);
$setobr=$_COOKIE['chosenlang'];

}

这是 HTML 部分:

<form method="post" action="">

<select name="myselection" id="myselection" onchange="this.form.submit();">
<option value="choose">choose your language:</option>
<option value="Eng">Eng</option>
<option value="Esp">Esp</option>
</select>

</form>

问题是 $setobr 延迟显示 $chosenone;这意味着当我打印两者时,它首先显示相反的选择,然后是相同的选择!

有谁知道这是为什么?

4

3 回答 3

0

你能仔细检查一下这条线吗

setcookie ("chosenlang",$myselection, $t);

我希望它应该是 $chooseone 而不是 $myselection。

于 2013-01-07T21:46:59.790 回答
0

当您使用 设置 cookie 时setcookie(),您是在告诉浏览器在下一个请求和之后的任何请求中发回此值,直到 cookie 被更改、过期或被删除。

$_COOKIE此函数调用不会更新。这是故意的。

于 2013-01-07T21:52:48.647 回答
0

这不起作用:

    setcookie("chosenlang", $chooseone, $t);
    $setobr = $_COOKIE['chosenlang'];

$_COOKIE全局文档仅包含作为请求一部分的 cookie。由于您只是为响应设置该 cookie,因此它将仅在下一个请求中可用。

精简它可能是您正在寻找的:

    setcookie("chosenlang", $chooseone, $t);
    $setobr = $_COOKIE['chosenlang'] = $chooseone;

小心。也使用手册,它通常解释这些事情。http://php.net/$_cookie

于 2013-01-07T22:15:25.280 回答