如何在php中过滤POST数值?

时间:2011-07-27 02:32:48

标签: php

数字值..

$price = $_POST['price'];
$zipcode = $_POST['zipcode'];

如何过滤通过名为category_id的单个选择标记字段的两个字段,该字段使用explode()从此category_id字段中接收值。

表格

    <?php echo '<label for="Category">Category:</label>
<select name="category_id" size="1" ><br />';


$sql = "SELECT id, name FROM category ORDER BY name";

$rs = mysql_query($sql);

while($row = mysql_fetch_array($rs))
{
echo "<option value=\"".$row['name']."$".$row['id']."\">".$row['name']."</option>\n  ";
}


echo '</select>';

我收到带爆炸的category_id字段但不知道如何过滤它的方式,因为它同时是一个数字和数据字段。

$option = explode("$", $_POST['category_id']); 

enter code here

2 个答案:

答案 0 :(得分:0)

您是否只是尝试从已发布的$分隔的category_id字段中检索类别名称和ID?

如果是这样,那就应该这样做

$option = explode("$", $_POST['category_id']);
$name = $option[0];
$id   = $option[1];

我更倾向于在<option> value属性中设置ID,并从数据库或预先获取的关联数组中获取名称。

更新

如果您想要验证该字段,可以尝试类似

的内容
if (!preg_match('/^[a-zA-Z0-9]+\$\d+$/', $_POST['category_id'])) {
    // not valid
}

我不会尝试过滤掉该字段上的无效字符。验证和错误条件更简洁。

答案 1 :(得分:0)

不确定,如果我找到你的话。如果您尝试使用您的技术从同一个选择框中接收产品的名称和ID

echo "<option value=\"".$row['name']."$".$row['id']."\">".$row['name']."</option>\n  ";

将此行更改为此行。只需将$替换为“_”即可简化

echo "<option value=\"".$row['name']."_".$row['id']."\">".$row['name']."</option>\n  ";

然后在处理它时

$category_id = $_POST['category_id'];
$carr = explode("_",$category_id);
$category = $carr[0];
$id = $carr[1];

//now verify them
if((int)$id>0) { //id is valid number
// and so on