PHP $ _REQUEST不包含所有$ _GET变量
问题描述:
直到今天,我认为$ _REQUEST总是包含所有变量形式$ _POST和$ _GET。今天
但我有奇怪的经验,一个变量是$ _GET一部分,但不是$ _REQUEST一部分。我玩过一些提交参数的URL,它似乎总是在$ _REQUEST数组中缺少第一个参数。
你知道为什么会发生这种情况吗?
谢谢!
网址:
localhost/?app=files&getfile=ajax/newfile.php?dir=%2Ftest4&source=http%3A%2F%2Flocalhost%2Fimg%2Flogo.svg&filename=logo.svg&requesttoken=e250827c341650990cd4
答
dir
是在getfile
参数URI的查询参数。因此,它不会在$_GET
(因此$_REQUEST
)内。
你需要的东西来解析$_GET['getfile']
像parse_url()
或调整你的查询字符串。
答
你getfile
变量不正确编码:
localhost/?app=files&getfile=ajax/newfile.php?dir=%2Ftest4&source=http%3A%2F%2Flocalhost%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%2Flocalhost%2Fimg%
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
您可以在PHP中使用的urlencode()
功能编码URL的变量。
你可以与我们分享一些代码,所以我们能够看到你在做什么? – Jacta
能否为我们提供一些数据;你正在使用的uri,'print_r($ _ GET)'的输出和'print_r($ _ REQUEST)'的输出? – giorgio
特别是您要发送的查询字符串。 –