JS/PHP交叉URL编码和URL解码

JS/PHP交叉URL编码和URL解码,php,javascript,escaping,urlencode,urldecode,Php,Javascript,Escaping,Urlencode,Urldecode,好吧,我已经胡闹了好几个小时了,但我还是做不好,所以我要问你们 我有一个html文本区域,该值需要使用ajax(jquery)发送到php,然后输入到数据库中,并使用php再次打印。问题是我希望打印时与您键入的内容100%相同。包括像'和\ 我现在怎么做: var comment = escape( box.find('#newCommentArea').val() ).replace(new RegExp( "\\+", "g" ),"%2B"); 其中box.find(“#newComme

好吧,我已经胡闹了好几个小时了,但我还是做不好,所以我要问你们

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

我现在怎么做:

var comment = escape( box.find('#newCommentArea').val() ).replace(new RegExp( "\\+", "g" ),"%2B");
其中
box.find(“#newCommentArea”).val()是值。我使用ajax函数将
comment
传递给php,并将其作为POST数据提交

使用firebug,这是显示要发送的内容:
comment=asdf%27asdf

在php中打印
$\u POST['comment']
会给我
asdf\asdf

添加的
\
是一个问题。我需要把它处理掉

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

打印时,我使用
rawurldecode()

你们能指出这个方法是好的,还是可以做得更好

我如何摆脱
$\u POST['comment']
中的新
\

提前感谢,


MakuraYami

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

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


但是,在将PHP中的文本保存到数据库之前,您确实需要仔细清理它(使用
mysql\u real\u escape\u string
)。

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

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


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

谢谢,但您真的认为我没有测试它的显示方式吗?当我打印它时\会保留,这就是问题所在。mysql_real_escape_字符串给了我错误,说它找不到连接,我一直使用PDO函数来防止sql注入。我明白了。正如Armatus所建议的,您可以在显示文本之前使用
stripslashes
函数。如果您使用的是PDO,则不需要调用
mysql\u real\u escape\u string
。关于javascript,我仍然建议不要手动进行转义。我进行转义是因为当您在javascript中以POST形式提交字符串时,使用&字符将杀死它,因为它认为下一个变量已生成。如果使用jQuery进行提交,则不需要转义。检查此问题:。该值作为字符串值发送。无论如何,我很高兴你让它工作起来。好吧,这工作得很好,我想我有点困惑,因为我从javascript发送了一个urlencoded字符串,但在php中它不再编码了:/无论如何,使用stripslashes工作得很好,它现在显示的和输入的一样!