<form action="test.php" method="post">
Name: <input type="text" name="fname" />
<input type="hidden" name="fname" value="test" />
Age: <input type="text" name="age" />
<input type="submit" />
</form>
如何读取名为fname
的两个字段的值?
在$_POST
下的我的操作文件(test.php)中,我只获取隐藏的字段值。
是否有任何PHP设置可以读取这两个值?
答案 0 :(得分:10)
我相信你想把字段命名为:
Name: <input type="text" name="fname[]" />
<input type="hidden" name="fname[]" value="test" />
让PHP将它们理解为数组。
答案 1 :(得分:4)
如果有人想要这样做并且不想更改表单元素的名称,或者不能更改表单元素的名称,仍然有一种方法可以完成 - 你可以解析$ _SERVER ['QUERY_STRING']或http_get_request_body()值直接。
这就像是
$vals=explode('&',http_get_request_body());
$mypost=Array();
foreach ($vals as $val) {
list($key,$v)=explode('=',$val,2);
$v=urldecode($v);
$key=urldecode($key);
if ($mypost[$key]) $mypost[$key][]=$v;
else $mypost[$key]=Array($v);
}
这种方式$mypost
最终包含作为具有该名称的事物数组发布的所有内容(如果只有一个具有给定名称的内容,则它将是仅包含一个元素的数组,使用{{ 1}})。
要对查询字符串执行相同操作,请将$mypost['element_name'][0]
替换为http_get_request_body()
答案 2 :(得分:2)
如果要传递两个具有相同名称的表单输入,则需要将它们设为数组。例如:
<input type="text" name="fname[]" />
<input type="hidden" name="fname[]" value="test" />
然后,您可以使用以下方式访问它:
$_POST['fname'][0]
$_POST['fname'][1]
您可能想重新考虑一下确实是否需要使用相同的名称。
答案 3 :(得分:0)
解决方案
1)尝试对文本框和隐藏值使用不同的名称 2)使用上面提到的数组作为字段名称 3)如果名称相同,则不可能覆盖值