为什么我要通过GET传递urlencode网址

时间:2012-10-03 15:56:10

标签: php html url get urlencode

假设我

http://site.com/something?url=http://lol.com/lol

是否有任何优势(例如安全性等)

'http://site.com/something?url=' . urlencode('http://lol.com/lol');

而不只是传入未编码的url版本?我为什么要urlencode通过GET传递的东西,而不是只传入一个未编码的版本(当然,如果url param中有&或?或=然后我应该编码它...但是假设它们没有,为什么我应该编码吗?

2 个答案:

答案 0 :(得分:1)

在URL中有一些特殊含义的字符。如果您在没有编码的情况下传递它们,那么这些字符在外部URL(而不是它们所属的内部URL)中将具有特殊含义。

例如,如果您想传递

http://example.com/foo?1=2&3=4

你没有编码,那么你会得到:

http://example.com/?url=http://example.com/foo?1=2&3=4

url is http://example.com/foo?1=2
3 is 4
  

假设他们没有,我为什么要对它们进行编码

因为那时你必须查看你传递的每个URL以确定它是否需要编码。

总是编码更简单,更不容易出错,然后根据具体情况决定。

答案 1 :(得分:0)

只要我知道第二个样本非常好,如果你有可能在你的网址中使用unicode字符。