我的表格包含字段X:标题,内容,时间。
通过htmlform我将数据上传到此表中。 HTML是:
<form action="process2.php" method="post" enctype="multipart/form-data">
Headline: <input name="headline" type="text" size="100" /><br /><br />
Content:<textarea name="content" cols="100" rows="10" placeholder="Content here">
</textarea><br /><br />
</form>
process2 php脚本的一部分:
$headl = mysql_real_escape_string($_POST['headline']);
$headline=htmlspecialchars("$headl", ENT_QUOTES);
$cont=$_POST['content'];
$cont = str_replace("<", "<", $cont);
$cont = str_replace(">", ">", $cont);
$content=htmlentities($cont,ENT_QUOTES);
$sql="INSERT INTO X(`headline`, `content`, `date`) VALUES ('$headline','$content',NOW())";
$query = mysql_query($sql)or die(mysql_error());
问题: 标题和日期即将插入。 内容仍然是空的......
我在内容上也尝试了mysql_real_escape_string,但没有用。 为什么内容是空的? ......任何解决方案?
答案 0 :(得分:0)
请尝试这个,它应该适用于您的情况:
// htmlspecialchars Must with ENT_QUOTES, it actually make mysql_real_escape_string useless, but mysql_real_escape_string for safe anyway.
$headline = mysql_real_escape_string(htmlspecialchars($_POST['headline'], ENT_QUOTES));
$content = mysql_real_escape_string(htmlspecialchars($_POST['content'], ENT_QUOTES));
$sql = "INSERT INTO X(`headline`, `content`, `date`) VALUES ('{$headline}', '{$content}', NOW())";
$query = mysql_query($sql) or die(mysql_error());
要显示,您可以从mysql加载数据,并为每个执行htmlspecialchars_decode。
更简单的方法是,保存它们时不要做htmlspecialchars,就像这样:
$headline = mysql_real_escape_string($_POST['headline']);
$content = mysql_real_escape_string($_POST['content']);
在mysql_real_escape_string之后,数据对于mysql应该是安全的,因为所有已知的注入技巧都将被过滤。你只需要关心它自己的html内容。哦,两个内容的长度不得破坏你的字段的字符限制。