用php将下拉菜单的值保存到cookie中

用php将下拉菜单的值保存到cookie中,php,html,cookies,Php,Html,Cookies,我正在尝试将下拉菜单的值保存到cookie中!但是cookie显示了不同的值!下面是它的php代码: if (isset($_POST['myselection'])){ $chooseone=$_POST['myselection']; setcookie ("chosenlang",$chooseone, $t); $setobr=$_COOKIE['chosenlang']; } 这是HTML部分: <form method="post" action=""> <

我正在尝试将下拉菜单的值保存到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>

选择您的语言:
英格
Esp
问题是$setobr显示了带有延迟的$chosenone;这意味着当我同时打印这两个选项时,它首先显示相反的选项,然后显示相同的选项


有人知道为什么吗?

你能再检查一下这行吗

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

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

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

$\u COOKIE
不会被此函数调用更新。这是故意的。

这不起作用:

    setcookie("chosenlang", $chooseone, $t);
    $setobr = $_COOKIE['chosenlang'];
仅包含作为请求一部分的Cookie。由于您只是为响应设置cookie,因此它将仅在下一个请求中可用

优化它可能是您想要的:

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

保重。也可以使用手册,它通常会解释这些事情

与HTML代码(上、下)相关的PHP代码在哪里?在PHP中,$myselection应该是$chooseone吗?是的!我打错了!谢谢,我现在修好了,但还是一样的问题!!!对你说得对!但是你知道有什么办法可以解决吗?我仍然不明白为什么当我设置“Eng”时,它会设置“ESP”!但它不应该设置任何这样的方式!什么是“固定的”?我看不到任何代码,你只是解释了你的代码可能会做什么,这可能不能说明全部情况,可能会隐藏错误。没有错误!我只是想把下拉菜单的值保存到cookie中。唯一的问题是它设置了一步延迟!正如您所说的,它会在更改cookie后的下一个请求中设置它!是的,这就是它的工作原理。如果不想等待下一个请求,请不要从$\u COOKIE中读取所选语言,而是检查是否有COOKIE(可能没有),并检查是否已取回表单(可能没有),然后从所有这些信息中选择用户希望使用的语言-或默认语言,因为用户没有选择任何内容-并将其放入新变量中。