从下拉菜单设置PHP cookie
我有一个PHP脚本,允许用户决定页面显示的语言。信息存储在cookie中,然后在需要时读取以显示正确的内容 目前,我使用一个HTML下拉框来允许用户选择语言,然后他们必须按下表单提交按钮来设置cookie。当他们在下拉菜单中选择语言时,它会自动选择该语言并提交表单,我如何做到这一点?我希望你能理解我的问题 我当前的PHP代码是:从下拉菜单设置PHP cookie,php,html,Php,Html,我有一个PHP脚本,允许用户决定页面显示的语言。信息存储在cookie中,然后在需要时读取以显示正确的内容 目前,我使用一个HTML下拉框来允许用户选择语言,然后他们必须按下表单提交按钮来设置cookie。当他们在下拉菜单中选择语言时,它会自动选择该语言并提交表单,我如何做到这一点?我希望你能理解我的问题 我当前的PHP代码是: <?php $user_lang = null; if (isset($_POST["setc"])) { $expire = time() + 60 *
<?php
$user_lang = null;
if (isset($_POST["setc"])) {
$expire = time() + 60 * 60 * 24 * 30;
setcookie("mycookie", $_POST["sel"], $expire);
header("location: " . $_SERVER["PHP_SELF"]);
} else if (isset($_COOKIE["mycookie"])) {
$user_lang = $_COOKIE["mycookie"];
}
?>
<meta charset='utf-8'>
<form action="<?php echo $_SERVER["PHP_SELF"]; ?>" method="post">
<select name="sel" size="1">
<option value="en"<?php echo (!is_null($user_lang) && $user_lang === "en" ? " selected" : ""); ?>>English</option>
<option value="es"<?php echo (!is_null($user_lang) && $user_lang === "es" ? " selected" : ""); ?>>Español</option>
<option value="fr"<?php echo (!is_null($user_lang) && $user_lang === "fr" ? " selected" : ""); ?>>Français</option>
<option value="de"<?php echo (!is_null($user_lang) && $user_lang === "de" ? " selected" : ""); ?>>Deutsch</option>
</select>
<input name="setc" value="save setting" type="submit">
</form>
您需要使用JavaScript执行此操作:
<select name="sel" size="1" onchange="this.form.submit();">
每当用户更改下拉列表中的值时,将提交表单。您需要使用JavaScript:
<select name="sel" size="1" onchange="this.form.submit();">
每当用户更改下拉列表中的值时,将提交表单。将您的选择标记更改为:
<select name="sel" size="1" onchange="this.form.submit();">
如果没有JavaScript或任何其他客户端脚本语言,则无法使用select字段完成此操作。将select标记更改为:
<select name="sel" size="1" onchange="this.form.submit();">
如果没有JavaScript或任何其他客户端脚本语言,则无法使用select字段完成此操作。您可以在select字段中添加onchange事件:
请记住,为那些没有启用javascript的用户保留submit按钮是一件好事。您可以使用javascript隐藏该按钮,这样它就不会扰乱那些没有常规浏览器的用户的窗口。您可以在选择中添加onchange事件:
请记住,为那些没有启用javascript的用户保留submit按钮是一件好事。您可以使用javascript隐藏按钮,这样它就不会扰乱那些没有常规浏览器的用户的窗口。答案是用javascript而不是PHP。您可以像下面这样使用JavaScript悄悄地执行此操作:
<script>
window.onload = function() {
document.getElementById("idOfDropDown").addEventListener("change", function() {
document.forms["formName"].submit();
});
}
</script>
答案是JavaScript而不是PHP。您可以像下面这样使用JavaScript悄悄地执行此操作:
<script>
window.onload = function() {
document.getElementById("idOfDropDown").addEventListener("change", function() {
document.forms["formName"].submit();
});
}
</script>
我认为您必须像其他人所说的那样使用javascript,但是如果用户没有激活javascript,您也可以使用submit按钮作为备份:
<noscript><input value="save setting" type="submit"></noscript>
然后,由于只有当用户禁用javascript时才会显示submit按钮,因此需要添加一个隐藏输入来检查表单是否已在服务器端提交
<input type="hidden" name="setc" value="true" />
我认为您必须像其他人所说的那样使用javascript,但是如果用户没有激活javascript,您也可以使用submit按钮作为备份:
<noscript><input value="save setting" type="submit"></noscript>
然后,由于只有当用户禁用javascript时才会显示submit按钮,因此需要添加一个隐藏输入来检查表单是否已在服务器端提交
<input type="hidden" name="setc" value="true" />
@Callum不,不幸的是没有。@Callum不,不幸的是没有。