可以在urlen中对urlencode(位置:值)中的值进行编码吗?

Jua*_*nti 4 php header urlencode

这是PHP.

我做

header("Location: " . $url)
Run Code Online (Sandbox Code Playgroud)

而且效果很好.但是,如果我这样做

header("Location: " . urlencode($url))
Run Code Online (Sandbox Code Playgroud)

我被重定向到一些奇怪的地方,比如$ url/$ url,当然给了我404.

但我确实想要urlencode我的网址,因为它是由用户提供的数据.我该怎么做?我可以打破它"http://"和"其余",只有urlencode"其余"吗?

在这种情况下推荐的做法是什么?

谢谢

Pek*_*ica 5

但我确实想要urlencode我的网址,因为它是由用户提供的数据

解决方案是不对完整URL进行编码,仅编码需要编码的位.只编码"其余"也必然会失败.在这个例子中,例如,所有的斜线,将?=必须保持不变:

http://www.example.com/rewritten directory/index.php?id=Hello World, how are you?
Run Code Online (Sandbox Code Playgroud)

但你确实需要编码rewritten directory,Hello World, how are you? 以便整个事情形成一个有效的URL.

与字符编码一样,您需要确保从一开始就知道编码的方式.您的问题的解决方案(如果有一个 - header()可能在没有urlencode()的情况下工作!)可能会在您的代码中进一步提升.