我找到了这个问题https://stackoverflow.com/a/7244888/1473523的答案,但在我的情况下,我无法设置隐藏字段,那么在PHP中发布禁用的选择字段是否无法做到?
答案 0 :(得分:10)
不,这就是禁用该字段的原因:阻止将值发布回服务器。如果您要禁用该字段,则应该知道其值,因为它无法更改。您不应该需要要回发的值。
如果值正在根据其他输入进行更改,则应捕获该输入服务器端并使用它来计算将回发的值,就像计算哪个值一样选择客户端。依靠客户端计算的值是准确的是严重的安全漏洞。
您的选项是在发布表单之前以某种方式启用该字段,或添加隐藏字段。
答案 1 :(得分:1)
尝试在提交表单之前删除使用javascript禁用的属性。
答案 2 :(得分:0)
根据您发布的问题,这是创建禁用字段的方式:
<select class="txtbx1" name="country_disabled" disabled="disabled">
您也可以隐藏它:
<select class="txtbx1" name="country_disabled" type="hidden">
答案 3 :(得分:0)
不要依赖客户端这样的东西。他们可以使用浏览器中的开发人员工具或像Fiddler这样的工具禁用JS或制作请求。
如果您希望有一个值,但不允许用户更改,请将其保留在服务器端。例如,使用会话。
答案 4 :(得分:0)
没有办法发布一个禁用的字段,如果它是无意义的。
因此,如果没有提交任何值,或者使用<input type="hidden" name="same_as_select" value="default" />
提供默认值,则在服务器端定义默认值,然后,如果您的表单已启用,它将始终覆盖默认值。
答案 5 :(得分:0)
不,甚至没有办法,但你可以测试该字段是否为空以防止未定义的索引通知:
if(empty($_POST['select_name'])){ //or !isset()
$disabled_select = 0; //or its default value
} else {
$disabled_select = $_POST['select_name'];
}
我更喜欢使用单行:
$disabled_select = empty($_POST['select_name']) ? 0 : $_POST['select_name'];