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

时间:2015-06-08 15:49:42

标签: php forms user-input

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

标准<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表单中提取数据的正确方法吗?

2 个答案:

答案 0 :(得分:2)

表单中的所有数据都会以$ _POST或$ _GET 数组的形式传递到您的脚本。

所以你可以简单地做

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

这将运行您的清理并将数据放回$ _POST数组中,因此无需再使用另一个数组。

我从来没有理解为什么人们将数据从$ _POST / $ _ GET数组移动到标量变量或其他数组。它是一个非常好的阵列,一旦交付给你,你的所有你做任何你喜欢的。

答案 1 :(得分:1)

您仍然可以在PHP中动态循环输入。这可以做你想要的:

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