这是查询:
if (isset($_POST['editMessage'])) {
$result = mysql_query("UPDATE messages SET message = '".htmlspecialchars($editedmessage)."' WHERE id = '".$id."'");
if ($result) {
die("<strong>Message has been edited!</strong>");
} else {
die("<strong>Error ".mysql_error()."</strong>");
}
}
使用此表格:
<form action="index.php" method="post">
<textarea name='editedmessage' rows='5' cols='70'><?php echo $_POST['editedmessage'];?></textarea>
<input type='submit' name='editMessage' value='Edit'>
它没有显示错误,它更新了表字段,但没有将编辑后的消息输入到字段中,因此字段更新并且根本不显示任何信息。
我哪里错了?
答案 0 :(得分:2)
htmlspecialchars($editedmessage)
$editedmessage
,您的意思是$_POST['message1']
mysql_real_escape_string( htmlspecialchars( ... ) )
答案 1 :(得分:1)
尝试另一种方式,正确的你得到一个资源:
if(!$result) {
die('Died: ' . mysql_error());
} else {
echo "Edited:";
}
答案 2 :(得分:0)
你错过了这一行:
$editedmessage = $_POST['editMessage'];
答案 3 :(得分:0)
你错了
$result = mysql_query("UPDATE messages SET message = '".htmlspecialchars($_POST['editedmessage'])."' WHERE id = '".$id."'");
答案 4 :(得分:0)
您在查询中使用$editMessage
而不是_POST [editMessage](除非您已打开注册全局变量,显然您没有)。
但是,如果不首先在editMessage上运行mysql_real_escape_string()
,请不要这样做,并且不要在其上运行htmlspecialchars()!编码数据不属于数据库。
要么$editMessage = $_POST['editMessage'];
,要么直接在查询中使用_POST,但是为了善良而将其包装在mysql_real_escape_string()
中!
但是,当你回复它时,你想要在$ _POST ['message1']上运行htmlspecialchars()
,htmlentities()
或至少string_tags()
。此页面是易受攻击的XSS(跨站点脚本)。