如何遍历数组并在所有实体上进行mysqli真正的转义?

时间:2013-09-03 09:11:55

标签: php post mysqli

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

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

如何遍历我的阵列并保护我的表单帖子?

2 个答案:

答案 0 :(得分:2)

示例formescapequery

<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)."')";
    }

?>

答案 1 :(得分: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);

就这么简单。

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