0

对于我的学校作业,我必须创建一个使用,并防止 SQL 和 HTML 注入的函数。trim()htmlspecialchars()mysql_real_escape_string()

我已经尝试了一段时间,但我无法让它工作。我试过一个foreach循环和一个extract函数。我一定是做错了什么,或者错过了什么。

到目前为止,我得到了这个:(只是为了看看变量是否正在被处理)

foreach ($_Post as $Key => $Value) { $$Key = $Value; echo $$Key."<br>"; }

但它不会返回任何东西。

我可以trim单独对每个变量使用 etc,但必须有一个更简单的方法。

我有$_POST变量“voorletters”、“tussenvoegsel”、“naam”、“adres”、“huisnummer”(数字)、“telefoon”(数字)、“邮政编码”、“woonplaats”、“geslacht”、“电子邮件” ' 和 'wachtwoord'(密码)。

请帮助我:(!我是关于php的初学者,所以请尝试彻底解释。

4

4 回答 4

1

那这个呢

foreach($_POST as $key => $value) {
    echo 'Current value in $_POST["' . $key . '"] is : ' . $value . '<br>';
    $_POST[$key] = your_filter($value);
}

your_filter()您的函数调用 trim、htmlspecialchars 等在哪里:

function your_filter($value) {
    $newVal = trim($value);
    $newVal = htmlspecialchars($newVal);
    $newVal = mysql_real_escape_string($newVal);
    return $newVal;
}

也要注意变量名$_POST不是$_Post. 你不需要在这里使用 $$,你在循环中有键名,$key你可以访问/替换数组中的值$_POST[$key]

编辑:添加回声以打印当前值

EDIT2:添加了一个your_filter()函数示例

于 2012-11-16T10:21:30.217 回答
0
// $_POST = array('voorletters' => '<<', 'tussenvoegsel' => '>>', 'naam' => '<<');

foreach($_POST as &$val) //pass any post value by reference
   $val = mysql_real_escape_string(htmlspecialchars(trim($val)));


extract($_POST);
echo $voorletters;
echo $tussenvoegsel;
echo $naam;
于 2012-11-16T10:32:27.093 回答
-1
foreach ($_POST as $Key => $Value) { 

 echo yourFunctionName($Value)."<br/>"; 

}
于 2012-11-16T10:20:51.147 回答
-1

尝试这个...

function real_escape_and_trim($value)
{
    $value = trim($value);
    $value = mysql_real_escape_string($value);
    return $value;
}

foreach($_POST as $key => $value)
{
    $_POST[$key] = real_escape_and_trim($value);
}

$field_name = $_POST['field_name'];
于 2015-11-02T12:33:22.527 回答