我想在$ _POST []数组中找到的所有发布表单上进行mysql真正的转义。但我不知道如何遍历数组以逃避每个字符串。
我有不同的名称,比如serverAddressIn和serverPortOut,我需要在将它们插入数据库之前“安全”。
如何遍历我的阵列并保护我的表单帖子?
答案 0 :(得分:2)
示例form
,escape
和query
<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);
就这么简单。
请注意,出于安全原因,您应该明确显示字段名称白名单