douquan1015 2015-06-08 15:49 采纳率: 0%
浏览 56
已采纳

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

I have been doing web programming with PHP for about 2 months,and for forms, I have been retrieving user input in a manner such as this:

For standard <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);
}
}

And then, on another script, I'd do something like this:

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

$dataArray = array($userID, $company, $projectNum);

The problem with this approach is it's very time consuming when I have a large form. I'm thinking in Perl (using Perl CGI), I'd be able to dynamically loop across the user input fields, and add each input into an array dynamically, but I'm not sure if something like this is possible in PHP. Right now, I'm currently having to manually pull each data from each input. All the PHP form examples online do it in this manner as well. Is this the correct way of pulling data from PHP forms?

  • 写回答

2条回答 默认 最新

  • doupo1908 2015-06-08 15:56
    关注

    All data from a form is delivered to your script in either the $_POST or $_GET array.

    So you could simply do

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

    This will run your sanitization and place the data back into the $_POST array therefore removing the need for yet another array.

    I never did understand why people move data from the $_POST/$_GET array to scalar variables or other arrays. Its a perfectly good array and once delivered to you its all yours to do whatever you like with.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 帮我调试idea基于spring boot项目
  • ¥15 es 7.17.20版本生成时间戳
  • ¥15 wpf dategrid表头排序图标自定义
  • ¥15 分析下图所示同步时序逻辑电路的逻辑功能。
  • ¥15 halcon联合c#遇到了问题不能解决
  • ¥15 xshell无法连接提示ssh服务器拒绝密码
  • ¥15 AT89C52单片机C语言关于串口通信的位操作
  • ¥20 需要步骤截图(标签-服务器|关键词-map)
  • ¥50 gki vendor hook
  • ¥15 灰狼算法和蚁群算法如何结合