1

好吧,我已经搞砸了好几个小时了,但我仍然无法做到这一点,所以我要问你们。

我在 html 中有一个 textarea,需要使用 ajax(jquery) 将值发送到 php,然后输入到数据库中,并使用 php 再次打印。问题是我希望打印时与您输入的内容 100% 相同。包括像'\

我现在怎么做:

var comment = escape( box.find('#newCommentArea').val() ).replace(new RegExp( "\\+", "g" ),"%2B");

价值在哪里box.find('#newCommentArea').val()。我comment使用 ajax 函数传递给 php 并将其作为 POST 数据提交。

使用萤火虫这似乎是要发送的:comment=asdf%27asdf

$_POST['comment']用php打印给了我asdf\'asdf

添加\是一个问题。我需要摆脱它。

无论哪种方式,因为只有 javascript 转义在 php 中是不安全的,所以我也这样做urlencode()

打印时我使用rawurldecode()

你们能否指出这种方法是否很好,或者是否可以做得更好。

我如何摆脱新\$_POST['comment']

提前致谢,

真仓夜美

4

2 回答 2

2

斜线是自动添加的,PHP 或服务器的设置可以更改(但通常不应该)。您可以使用stripslashes()( PHP: stripslashes ) 反转它。在显示之前立即使用此功能,因此不要在存储到数据库之前。

如果已经发送,则不再需要在 PHP 中进行 urlencode(urlencode 需要在发送之前进行),您只需要确保它是数据库安全的。

不幸的是,我无法就 URL 编码的最佳方式向您提供建议,我自己往往会对此感到困惑 :) 希望其他人能够澄清这一点。

于 2012-04-20T09:52:53.723 回答
1

当您将打印保存在数据库中的文本时,\'将显示为'. 因此,可以将 value 保存到数据库中\'

此外,如果您使用 jQuery 发出请求,则不需要'在请求之前对字符进行转义,这应该正确打包。

但是,在将其保存到数据库之前,您确实需要小心清理 PHP 中的文本(使用mysql_real_escape_string http://php.net/manual/en/function.mysql-real-escape-string.php)。

于 2012-04-20T09:50:53.407 回答