我正在建立一个非常AJAX的网站,这意味着向服务器发布大量信息,有时是由用户输入的。
这就是我发布内容的方式
xmlhttp.open("POST", 'somepage.php' ,true);
xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");
xmlhttp.send('post=stuuf I want to send');
我的问题的一个例子是,有人输入FOO BAR作为他们的名字,这将发布firstName = FOO& lastName = BAR
在php中获取$ _POST ['firstName']是FOO而$ _POST ['lastName']是BAR
但如果有人输入名称FOO& BAR SMITH,它会像第一个名字= FOO& BAR& lastName = SMITH
一样发布在php中获取$ _POST ['firstName']是FOO和$ _POST ['BAR']没有任何价值,这开始分崩离析。这意味着我必须更换&在发布的所有内容中,我发现它很烦人。
有没有办法告诉php忽略任何&,只发送一个大字符串。当我需要发送多个值时,我打算用'_'打破它们,然后我可以用&#95替换任何用户输入_并且再也不用担心它了。
这可以在.htaccess中完成,或者如果没有则在php文件中完成吗?
感谢您的帮助
答案 0 :(得分:1)
不要在PHP端执行此操作...发送正确的HTTP请求!您正在破坏客户端的所有数据。如果您要发送URL编码数据,请将其编码为URL。
答案 1 :(得分:0)
不,但在将数据用作ajax请求中的字符串之前,绝对必须转义数据。
答案 2 :(得分:0)
您应该使用encodeURI
或encodeURIComponent
对要发送的数据进行编码。这样你就可以发送你想要的任何字符。