mysql_real_escape_string() - > stripslashes() - > jquery.append()

时间:2011-06-08 08:03:23

标签: php jquery

我让我的用户输入文本,然后将它们带到服务器端php并处理它们,如果一切正常,我只需用jquery附加文本,而不必重新加载页面。

这是程序:

$post_text = htmlspecialchars(mysql_real_escape_string($_POST['post_text']));
某些逻辑...

一切都好!

stripslashes(str_replace("\\n", "", $post_text))

然后我发送所有nesseary数据witj json

echo json_encode($return); 

在客户端,我附加了从服务器端保存在变量中的html块。

这似乎适用于localhost,它会删除所有斜杠等等,但是在线它只是删除斜线,并且它们不断出现,当我点击刷新它们消失时因为它的一个

stripslashes($comment['statusmsg_text'])
用p直接从数据库写出来。是json增加了一些额外的东西吗?我不明白因为它在localhost上完美运行。

最好的问候, 亚历山大

3 个答案:

答案 0 :(得分:3)

额外的斜杠可能是magic quotes。您shouldn’t rely on themdisable them

此外,mysql_real_escape_string仅应用于准备要放入MySQL语句中的字符串上下文的字符串。类似地适用于htmlspecialchars,{{1}}仅应用于清理要放入HTML上下文的数据。

答案 1 :(得分:1)

在没有stripslashes的情况下尝试,json_encode应该处理它。您需要做的就是在字符串触及数据库之前使用mysql_real_escape一次。

答案 2 :(得分:1)

可能是,在您的服务器和本地主机上,magic_quotes_gpc指令的设置方式不同,因此您的字符串在服务器端进行了双重编码。