好吧,我现在已经搞乱了几个小时,我仍然无法做到这一点,所以我会问你们。
我在html中有一个textarea,需要使用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
$_POST['comment']
给了我asdf\'asdf
添加的\
是个问题。我需要摆脱它。
无论哪种方式,因为只有javascript转义在php中不安全我也会urlencode()
打印时我使用rawurldecode()
你们可以指出这种方法是否合适,或者是否可以做得更好。
我如何摆脱\
$_POST['comment']
提前致谢,
MakuraYami
答案 0 :(得分:2)
自动添加斜杠,PHP或服务器的设置可以更改(但通常不应该)。您可以使用stripslashes()
(PHP: stripslashes)撤消它。在显示之前立即使用此功能,因此不要在存储到数据库之前使用。
如果已经发送了urlencode,则不需要在PHP中使用urlencode(urlencode需要在发送之前),你只需要确保它的数据库是安全的。
不幸的是,我不能告诉你什么是URL编码的最佳方式,我自己会对此感到困惑:)希望其他人能够澄清这一点。
答案 1 :(得分:1)
当您打印保存在数据库中的文本时,\'
将显示为'
。因此,可以将值\'
保存到数据库中。
此外,如果您使用jQuery发出请求,则不需要在请求之前转义'
个字符,这应该正确打包。
但是,在将文本保存到数据库之前,您需要小心清理PHP中的文本(使用mysql_real_escape_string
http://php.net/manual/en/function.mysql-real-escape-string.php)。