使用PHP获取选项值和文本

时间:2010-10-23 04:57:52

标签: php forms select

假设我有一个HTML表单:               美国     CDN           我选择选项1(美国) 然后是一个php页面      好吧,呃,工作正常,回声是“1” 我怎样才能显示“USA”?所以从本质上讲,我也希望传递选项的TEXT。我怎么能这样做?

3 个答案:

答案 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 }