JS/PHP交叉URL编码和URL解码
好吧,我已经胡闹了好几个小时了,但我还是做不好,所以我要问你们 我有一个html文本区域,该值需要使用ajax(jquery)发送到php,然后输入到数据库中,并使用php再次打印。问题是我希望打印时与您键入的内容100%相同。包括像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
'
和\
我现在怎么做:
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工作得很好,它现在显示的和输入的一样!