2011-05-25 81 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