2012-11-15 120 views
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 
+0

你可以與我們分享一些代碼,所以我們能夠看到你在做什麼? – Jacta

+0

能否爲我們提供一些數據;你正在使用的uri,'print_r($ _ GET)'的輸出和'print_r($ _ REQUEST)'的輸出? – giorgio

+0

特別是您要發送的查詢字符串。 –

回答

0

dir是在getfile參數URI的查詢參數。因此,它不會在$_GET(因此$_REQUEST)內。

你需要的東西來解析$_GET['getfile']parse_url()或調整你的查詢字符串。

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請求的第一個變量來問號(?)之後。所有附加變量必須遵循&符號(&)。

如果你有多個問號在您的網址,然後你破壞協議,你很可能會造成混亂。我敢打賭,你的第二個變量是缺少文本: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的變量。