我是否必须从GET变量中urldecode()urlencoded的URL?

时间:2015-01-09 14:48:41

标签: php

如果我在GET变量中收到一个url编码的URL,并从PHP文件中读取它,那么它是否已经从脚本的角度进行了解码?

在我的本地机器上,这很好用; URL似乎已经被服务器解码,或者只是HTTP协议。

这样做的:

echo '<a href="' . $_GET['link'] . '">link</a>';
没有urldecode($_GET['link'])

将输出有效的(&#34;解码的&#34;)链接。

但这个解决方案是否易于迁移和可靠?它取决于PHP版本还是Apache版本?

1 个答案:

答案 0 :(得分:3)

来自the documentation

  

GET变量通过urldecode()传递。

它们已经被解码了。你不应该再解码它们。


另一方面,您应该使用htmlspecialchars对HTML进行编码,因为直接在页面中回显URL输入会使您容易受到XSS攻击。