2011-05-25 31 views
6

Tengo el siguiente URLComo lee los parámetros de la cadena de consulta HTTP

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

Quiero obtener el valor 13 de dentro de mi módulo.

He tratado con

$_GET['gid[]'] 

y con

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

pero siempre consigo null.

¿Cómo puedo hacer esto? Gracias

+0

¿Has probado print_r ($ _ GET ['gids']); ? o echo $ _GET ['gids'] [1]; ? – Chumillas

+0

... o, más generalmente, print_r ($ _ REQUEST) ya que el OP no está seguro de cómo se nombrará ese parámetro de consulta. En este caso, Joe tiene la respuesta a continuación: se ponen automáticamente en una matriz llamada 'gids'. – Hound

+0

@Chumillas: No lo hice. pero [la respuesta de Joe] (http://stackoverflow.com/questions/6126795/how-to-read-parameter-from-the-http-query-string/6126877#6126877) me puso en la dirección correcta. Gracias. – MarcoS

Respuesta

7

Suponiendo que la URL está codificada correctamente (gids% 5B% 5D) y que es el único elemento en la matriz, el contenido de ese primer elemento en gids estaría en $_GET['gids'][0].

+0

gracias: ¡eso fue todo! Una pregunta más: escribes "Drupal tiene su propia forma de manejar la cadena de consulta", ¿y sabes dónde puedo leer al respecto? He buscado pero no encontré documentación sobre este tema. Cualquier enlace a la documentación útil es muy apreciado. – MarcoS

+0

Lo siento, estaba pensando en 'arg()', que solo trata con la variable de cadena de consulta de ruta ('$ _GET ['q']'). Se actualizó para eliminar el bit sobre tratar con todas las variables '$ _GET'. – Dan

+0

Si usa esto, debe limpiar la entrada o acaba de abrir un agujero de seguridad XSS en su sitio. – Brady

3

En PHP 5.2 +, utilice filter_input() leer GET y POST variables:

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

gracias! esto puede ser útil en el futuro. Para mis propósitos actuales, [la respuesta de Joe] (http://stackoverflow.com/questions/6126795/how-to-read-parameter-from-the-http-query-string/6126877#6126877) hizo el trabajo. – MarcoS

4

Dado que este se etiqueta con la palabra clave "Drupal" y viene en las búsquedas de Google. La forma de hacerlo de Drupal 7 y hacerlo más fácil es usar drupal_get_query_parameters(). Esto devolverá una matriz asociada de todas las variables y valores de la cadena de consulta a la vez.

Al usar esto, cuando almacena la información proveniente de la URL, se la desinfecta para ataques XSS y SQLi.

+0

Creo que esta debería ser la respuesta aceptada ya que esta es la forma de Drupal. – ionize

Cuestiones relacionadas