治疗与治疗作为$ _GET的普通字符

时间:2013-08-13 08:29:45

标签: php

我有一个应用程序通过PHP将内容发布到MySQL数据库。 PHP使用$ _GET从URL中提取内容,然后将其插入到数据库中。

这很好用,但我发现了一个问题。如果用户输入某些字符(“,&和其他),则$ _GET方法无法正确地将内容与URL分开。

假设用户发布此内容: 我爱蓝&绿色

在这种情况下,&符号在单词blue之后剪切字符串。

有没有办法让我编辑我的PHP文件以忽略&符号,并实际上把它作为变量的一部分,它应该是$ _GET?任何帮助都会很棒!

7 个答案:

答案 0 :(得分:6)

您可以在将数据发送到PHP之前对其进行URL编码。这是一个更好的解决方案 如果这些字符在数据中,则不得在查询字符串中使用特殊字符。

在Javascript中,您可以使用escape函数:escape(&ee)%26ee

答案 1 :(得分:2)

正确的方法是对“&”进行urlencode由客户提供:传递“%26”而不是“&”

答案 2 :(得分:1)

您可以使用$_SERVER['QUERY_STRING']

来自http://php.net/manual/en/reserved.variables.server.php

答案 3 :(得分:1)

您可以将请求作为base64编码的字符串发送:

$string = base64_encode("This is my long string with &ampersands and 'quotes'");
print base64_decode($string);

请注意,base64编码的数据占用的空间比原始数据多33%。

从手册中: http://php.net/manual/en/function.base64-encode.php

您还有urlencode

答案 4 :(得分:1)

尝试对你的字符串进行urlencode:

&

变为

%26

这是一个PHP函数: http://php.net/manual/fr/function.urlencode.php

答案 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完成。