用php如何比较值与数组和声明变量?

时间:2015-01-19 11:42:02

标签: php html arrays

嗨我有一个带有select的html表单,这个选项没有实际值以避免sql注入。 表格html

<select type="text" name="code">
                <option value="1">domain3.net</option>
                <option value="2">domain2.com</option>
                <option value="3">domain.es</option>
            </select> 

我正确地获得了所有变量,只是我希望现在这个select值被转换为实际值的是域tld,它位于一个静态数组中。 我的PHP

  $dor = $_POST['code'];
  $dom = array(
    1 => 'domain3.net', 
    2 => 'domain2.com', 
    3 => 'domain.es'
    );
$domain = (in_array($dor, $dom));
echo $domain;

我希望你能帮助我

4 个答案:

答案 0 :(得分:3)

我能理解你的方法背后的原因,但这将是一个维持的噩梦。每当您支持新的顶级域名时,您都必须在多个位置编辑代码。

使用简单的数据库表存储可用的域类型,然后使用内容填充表单。它对于验证和可扩展性将更加健壮。

答案 1 :(得分:2)

使用array_key_exists函数将键匹配到静态数组中。

 $dor = $_POST['code'];;
    $dom = array(
    1 => 'domain3.net', 
    2 => 'domain2.com', 
    3 => 'domain.es'
    );
$domain = (array_key_exists($dor, $dom))?$dom[$dor]:'';
echo $domain;

答案 2 :(得分:1)

我也是PHP的初学者..但我认为你需要的是:

$domain = $dom[$dor]; 

in_array用于检查值是否存在 要获取值本身,您必须使用索引或键访问数组元素。

答案 3 :(得分:0)

<?php
$dor = $_REQUEST['code'];
  $dom = array(
    1 => 'domain3.net', 
    2 => 'domain2.com', 
    3 => 'domain.es'
    );
foreach($dom as $key=>$value)
{

 if($key==$dor)
 {
   echo "Domain is : ".$value; 

    break; 
 }



}

?>