检索PHP表单输入的标准方法


Standard way of retrieving PHP Form Inputs

我已经用PHP做了大约2个月的web编程,对于表单,我一直在以这样的方式检索用户输入:

对于标准<input type="text">:

/*input sanitation*/
function testInput($data) {
    $data = trim($data);
    $data = stripslashes($data);
    $data = htmlspecialchars($data);
    $data = mysql_real_escape_string($data);
    return $data;
}
/*just gets the data*/
function getRText($HTMLname) {
if (isset ( $_POST [$HTMLname] ) && ! empty ( $_POST [$HTMLname] )) {
    return testInput(( $_POST [$HTMLname] ));
} else {
    throw new Exception("Input is missing from " + $HTMLname);
}
}

然后,在另一个脚本中,我会这样做:

$userID = getRText('uid');
$company = getRText('company');
$projectNum = getRText('projnum');
$dataArray = array($userID, $company, $projectNum);

这种方法的问题是,当我有一个大表单时,它非常耗时。我正在考虑在Perl中(使用Perl CGI),我将能够动态地遍历用户输入字段,并动态地将每个输入添加到数组中,但我不确定在PHP中是否有可能这样做。现在,我目前必须手动从每个输入中提取每个数据。所有在线的PHP表单示例都是这样做的。这是从PHP表单中提取数据的正确方法吗?

表单中的所有数据都通过$_POST或$_GET 数组传递给脚本。

所以你可以直接输入

foreach ($_POST as $key => $val)
{
    $_POST[$key] = testInput($val);
}

这将运行您的清理,并将数据放回$_POST数组,从而消除了对另一个数组的需要。

我一直不明白为什么人们把数据从$_POST/$_GET数组移动到标量变量或其他数组。这是一个完美的数组,一旦交付给你,你就可以随心所欲了。

在PHP中仍然可以动态地遍历输入。这就是你想要的:

$input_array = array();
foreach ($_POST as $key => $val)
{
    $input_array[] = getRText($val);
}