<?php
if (isset($_POST['post'])) {
// sanitize variables
$title = mysql_real_escape_string(trim($_POST['title']));
$text = mysql_real_escape_string(trim($_POST['text']));
if (strlen($title) > 3) {
mysql_query("INSERT INTO msgs (title, text, date)
VALUES('$title', '$text', '".time()."')");
header('location: msg.php?id='.mysql_insert_id().'');
exit;
}
else {
echo '<h2>Errors</h2><p style="color: maroon">> Fields title and text must consist more than 3 characters.</span>';
}
}
?>
这样安全吗?我忘记了什么吗? 在我公开之前确定一下。
答案 0 :(得分:4)
您没有检查“文本”的长度。
如果mysql_real_escape_string
返回FALSE会怎样?
如果插入失败怎么办?在假设你获得插入ID之前,你不应该检查它吗?
答案 1 :(得分:2)
我会:
a)如果不允许HTML,请添加调用strip_tags();
b)如果允许HTML,则添加对htmlentities()的调用。
答案 2 :(得分:1)
您可以添加的另一件事是检查收到的数据是否来自您域中的表单。一些聪明的人可以创建自己的表单并发布到你的脚本。