我有一个应用程序通过PHP将内容发布到MySQL数据库。 PHP使用$ _GET从URL中提取内容,然后将其插入到数据库中。
这很好用,但我发现了一个问题。如果用户输入某些字符(“,&和其他),则$ _GET方法无法正确地将内容与URL分开。
假设用户发布此内容: 我爱蓝&绿色
在这种情况下,&符号在单词blue之后剪切字符串。
有没有办法让我编辑我的PHP文件以忽略&符号,并实际上把它作为变量的一部分,它应该是$ _GET?任何帮助都会很棒!
答案 0 :(得分:6)
您可以在将数据发送到PHP之前对其进行URL编码。这是一个更好的解决方案 如果这些字符在数据中,则不得在查询字符串中使用特殊字符。
在Javascript中,您可以使用escape
函数:escape(&ee)
将%26ee
答案 1 :(得分:2)
正确的方法是对“&”进行urlencode由客户提供:传递“%26”而不是“&”
答案 2 :(得分:1)
您可以使用$_SERVER['QUERY_STRING']
答案 3 :(得分:1)
您可以将请求作为base64编码的字符串发送:
$string = base64_encode("This is my long string with &ersands and 'quotes'");
print base64_decode($string);
请注意,base64编码的数据占用的空间比原始数据多33%。
从手册中: http://php.net/manual/en/function.base64-encode.php
您还有urlencode
答案 4 :(得分:1)
答案 5 :(得分:1)
在创建查询字符串之前,怎么编码呢?
$str = "I love blue & green ?=&˙Đ[]";
$str = urlencode($str);
echo $str;
将返回:
I%20love%20blue%20%26%20green%20%3F%3D%26%CB%99%C4%90%5B%5D
答案 6 :(得分:0)
在将字符串作为GET参数传递之前,必须URL encode。在这种特殊情况下,您必须将& 符号替换为%26 。
这可以在您发送表单之前使用javascript完成。