2011-05-25 39 views
6

我有以下URL如何從HTTP查詢字符串

http://www.example.com/node/add/forum/3?gids[]=13 

我想從我的模塊中獲得的價值13讀取參數。

我試着

$_GET['gid[]'] 

$_GET['gids%5B%5D'] 

,但我總是null

我該怎麼做? 由於

+0

您是否嘗試過print_r($ _ GET ['gids']); ?或回聲$ _GET ['gids'] [1]; ? – Chumillas 2011-05-25 15:20:59

+0

...或者更一般地說,print_r($ _ REQUEST),因爲OP不確定如何命名該查詢參數。在這種情況下,Joe的答案如下:它們被自動放入一個名爲'gids'的數組中。 – Hound 2011-05-25 15:25:39

+0

@Chumillas:我沒有。但[喬的回答](http://stackoverflow.com/questions/6126795/how-to-read-parameter-from-the-http-query-string/6126877#6126877)把我放在正確的方向。謝謝。 – MarcoS 2011-05-25 15:29:11

回答

7

假定URL被正確編碼(導報%5B%5D),這就是在陣列中的唯一元件,則該第一元件的中的GID的內容將是$_GET['gids'][0]

+0

謝謝:就是這樣!還有一個問題:你寫下「Drupal有自己的處理查詢字符串的方式」,你知道我在哪裏可以閱讀嗎?我已經搜索,但沒有找到有關此主題的文檔。任何鏈接到有用的文件是高度讚賞。 – MarcoS 2011-05-25 15:28:04

+0

對不起,我在考慮'arg()',它只處理路徑查詢字符串變量('$ _GET ['q']')。更新刪除有關處理所有'$ _GET'變量的位。 – Dan 2011-05-25 15:37:38

+0

如果你使用這個,你必須清理輸入,或者你剛剛在你的站點打開了一個XSS安全漏洞。 – Brady 2017-01-28 18:23:36

3

在PHP 5.2 +,使用filter_input()讀取GET和POST變量:

$gids = filter_input(INPUT_GET, 'gids', FILTER_DEFAULT, FILTER_FORCE_ARRAY | FILTER_FORCE_ARRAY); 
+0

謝謝!這在未來可能會有用。對於我目前的目的,[喬的回答](http://stackoverflow.com/questions/6126795/how-to-read-parameter-from-the-http-query-string/6126877#6126877)做了這項工作。 – MarcoS 2011-05-27 06:00:00

4

由於這是標有關鍵字「Drupal的」,並出現在谷歌搜索。 Drupal 7的做法很簡單,就是使用drupal_get_query_parameters()。這將一次返回查詢字符串中的所有變量和值的關聯數組。

通過使用此功能,當您存儲來自URL的信息時,它已經被XSS和SQLi攻擊消毒。

+0

我認爲這應該是公認的答案,因爲這是Drupal的方式。 – ionize 2017-01-27 01:52:39