0

我想对在 $_POST[] 数组中找到的所有已发布表单进行 mysql 真正转义。但我不知道如何遍历数组来转义每个字符串。

我有不同的名称,例如 serverAddressIn 和 serverPortOut,在将它们插入数据库之前我需要“保护”它们。

如何遍历我的数组并保护我的表单帖子?

4

2 回答 2

2

样品form,escapequery

<form method="POST">
    <input name="options[name]" />
    <input name="options[city]" />
    <input type="submit" value="submit" />
</form>

<?php

    if (isset($_POST) && !empty($_POST['options']))
    {
        foreach ($_POST['options'] as $key => $value) 
        {
            $options[$key] = mysqli_real_escape_string($con, $value);
        }

        $query = "INSERT INTO table_name (`".implode("`, `", array_keys($options))."`) VALUES ('".implode("', '", $options)."')";
    }

?>
于 2013-09-03T09:19:10.060 回答
0

我想在处理所有输入之前对它们进行 mysqli_real_escape。

不,你没有。

清理琴弦

“mysqli_real_escape”不会“清理”任何东西。

有没有更好的办法

当然。您必须使用准备好的语句。而且,某种抽象库可以为您完成所有肮脏的工作。这是使用safeMysql的示例:

include 'safemysql.class.php';
$db = new safeMysql();

$allowed = array('server', 'serverAddress', 'serverportIN', 'serverAddressOut');
$data    = $db->filterArray($_POST, $allowed);
$sql     = "INSERT INTO ?n SET ?u";
$db->query($sql, $table, $data);

就如此容易。

请注意,出于安全原因,您应该明确列出字段名称的白名单

于 2013-09-03T09:18:12.997 回答