假设我有一个HTML表单: 美国 CDN 我选择选项1(美国) 然后是一个php页面 好吧,呃,工作正常,回声是“1” 我怎样才能显示“USA”?所以从本质上讲,我也希望传递选项的TEXT。我怎么能这样做?
答案 0 :(得分:2)
您需要将HTML页面上的选项值更改为您想要显示的文本(造成XSS安全隐患),或者在显示文本的页面上,您需要一个所有值匹配的数组与论坛输入。
例:
$names[1] = "USA"; $names[2] = "CDN";
然后,当您想要显示它时,您可以调用$names[$selection]
输出文本。
您可以考虑的另一个选项是在用户进行选择时使用javascript更新提交页面上的隐藏HTML元素(使用onUpdate)。此信息将与提交的表单数据一起传递。不是最安全或最可靠的选择,但仍然是一种选择。
答案 1 :(得分:1)
客户端的浏览器will not post back anything beyond the form element's name and value - 您必须合并其他表单字段和Javascript(或更改元素的值)才能发布“USA”。
答案 2 :(得分:0)
我建议您使用与打印表单相同的数据结构的副本。
例如,如果您要在一个PHP页面中完成所有操作......
<?php
$countries=array('USA','CDN');
?>
<form action='?' method='post'>
<select name='country'><?php
foreach($countries as $key=>$country){?>
<option value='<?php echo $key;?>'><?php echo $country;?></option>
<?php
} ?>
</select>
<input type='submit'>
</form>
<?php
if(isset($_POST['country'])){
$chosen=(int)$_POST['country'];
if(!isset($countries[$chosen])){?>Unknown country selection, wtf<?php exit; }?>
<div style='margin-top:20px;'>You selected <?php echo $countries[$chosen];?></div>
<?php }
另一种选择是完全抛弃数值,只使用国家名称作为选项的值。但是,要进行验证,您仍然需要值列表。检查此示例中的差异......
<?php
$countries=array('USA','CDN');
?>
<form action='?' method='post'>
<select name='country'><?php
foreach($countries as $country){?>
<option value='<?php echo $country;?>'><?php echo $country;?></option>
<?php
} ?>
</select>
<input type='submit'>
</form>
<?php
if(isset($_POST['country'])){
$chosen=preg_replace('/[^\w]/','',$_POST['country']);//this isn't strictly necessary, since the next line checks if the value is in your original array - but filtering input is a good habit!
if(!in_array($_POST['country'],$countries)){?>Unknown country selection, wtf<?php exit; }?>
<div style='margin-top:20px;'>You selected <?php echo $chosen;?></div>
<?php }