0

直到今天我还认为 $_REQUEST 总是包含所有来自 $_POST 和 $_GET 的变量。

但是今天我有一个奇怪的经历,一个变量是 $_GET 的一部分,而不是 $_REQUEST 的一部分。我对传递参数的 URL 进行了一些尝试,似乎 $_REQUEST 数组中总是缺少第一个参数。

你知道为什么会发生这种情况吗?

谢谢!

网址:

localhost/?app=files&getfile=ajax/newfile.php?dir=%2Ftest4&source=http%3A%2F%2Fl‌​ocalhost%2Fimg%2Flogo.svg&filename=logo.svg&requesttoken=e250827c341650990cd4
4

2 回答 2

5

您的getfile变量未正确编码:

localhost/?app=files&getfile=ajax/newfile.php?dir=%2Ftest4&source=http%3A%2F%2Fl‌​ocalhost%2Fimg%2Flogo.svg&filename=logo.svg&requesttoken=e250827c341650990cd4
                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

URL GET 请求中的第一个变量位于问号 ( ?) 之后。所有其他变量都必须跟在 & 号 ( &) 之后。

如果您的 URL 中有多个问号,那么您违反了协议,您可能会引起混淆。我敢打赌,您的第二个变量缺少文本:ajax/newfile.php

您的网址应如下所示:

localhost/?app=files&getfile=app%3Dfiles%26getfile%3Dajax%2Fnewfile.php%3Fdir%3D%252Ftest4&source=http%3A%2F%2Fl‌​ocalhost%2Fimg%
                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

urlencode()您可以使用该函数在 PHP 中对 URL 变量进行编码。

于 2012-11-15T16:58:07.350 回答
0

dir是参数中uri的查询getfile参数。因此,它不会在里面$_GET(因此$_REQUEST)。

您将需要解析或重组$_GET['getfile']parse_url()的查询字符串。

于 2012-11-15T16:45:31.313 回答