PHP $ _REQUEST不包含所有$ _GET变量

问题描述:

直到今天,我认为$ _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 
+0

你可以与我们分享一些代码,所以我们能够看到你在做什么? – Jacta

+0

能否为我们提供一些数据;你正在使用的uri,'print_r($ _ GET)'的输出和'print_r($ _ REQUEST)'的输出? – giorgio

+0

特别是您要发送的查询字符串。 –

dir是在getfile参数URI的查询参数。因此,它不会在$_GET(因此$_REQUEST)内。

你需要的东西来解析$_GET['getfile']parse_url()或调整你的查询字符串。

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请求的第一个变量来问号(?)之后。所有附加变量必须遵循&符号(&)。

如果你有多个问号在您的网址,然后你破坏协议,你很可能会造成混乱。我敢打赌,你的第二个变量是缺少文本:ajax/newfile.php

您的网址应该是这样的:

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

您可以在PHP中使用的urlencode()功能编码URL的变量。