【发布时间】:2012-05-20 12:33:48
【问题描述】:
我想要一个适用于不同形式的提交代码,例如:
<?php
$type = $_GET['type'];
if(isset($_SESSION['id']))
handle_form();
else
include 'form_'.$type.'.php'; // different fields based upon type
?>
所以我想知道循环通过超全局 $_POST 将所有键和值写入数据库是否明智。比如:
<?php
function handle_form() {
$query = "";
foreach($_POST as $key => $value) {
$query .= mysql_real_escape_string($key)."='".mysql_real_escape_string($value)."' AND ";
}
mysql_query("UPDATE ".$_POST['type']." SET ".substr($query,0,-4)."WHERE `id` = $_SESSION['id']");
}
?>
或者这是处理表单的一种非常不安全的方法,是否最好对相应的“form_type.php”中的所有字段进行硬编码?
【问题讨论】:
-
通过连接来自用户输入的字符串来构建查询从来都不是安全的。如果
$_POST['id']设置为“0 OR id IS NOT NULL”怎么办? -
好吧,我在写这个 sn-p 时犯了一个错误,实际上 id 来自会话。 (将对其进行编辑。)但我认为这会更安全,因为如果有人弄乱了表单,mysql_error 会阻止提交,对吗?