2010-08-07 12 views
5

He hecho algunas búsquedas y no he encontrado nada, estoy seguro de que es obvio.Comprueba si se pasan variables en un GET

Básicamente estoy tratando de averiguar si se ha pasado algo a través de GET desde un formulario.

sé cómo comprobar si los elementos individuales, pero sólo quiero hacer una comprobación rápida si nada en absoluto se pasa

Saludos

+0

'$ variables_from_get = ($ _SERVER ['REQUEST_METHOD'] == 'GET') && isset ($ _ GET);' –

+0

@Ast Derek: $ _GET siempre está ahí y una matriz, incluso si PHP_SAPI === ' cli ';-) – VolkerK

+0

@ Dere Derek: Puede enviar variables GET incluso con un POST; solo se trata de tener una URL con una cadena de consulta. –

Respuesta

8

Tenga cuidado al usar count($_GET). Si envía el formulario con valores vacíos, seguirá creando claves para los campos, y su count() será mayor que 0 y empty($_GET) será falso.

<?php 
print_r($_GET); 
?> 

<form action="" method="get"> 
    <input type="text" name="name"> 
    <textarea name="mytext"></textarea> 
    <input type="submit"> 
</form> 

Asegúrese de que los campos no son realmente vacía:

function ne($v) { 
    return $v != ''; 
} 

echo count($_GET);      // prints 2 
echo count(array_filter($_GET, 'ne')); // prints 0 
+0

Gracias por toda su ayuda – grant

7

Esto debería hacer el trabajo:

if (!empty($_GET)) 
{ 
} 
1
if (count($_GET) > 0) echo("I hear you!"); 
1

if(empty($_GET)) { /* no parameters passed*/}

1

simplemente compruebe la longitud de la matriz $ _GET a través de la co unt ($ _ GET). si ninguno ha pasado debe ser 0

0

simplemente 'justo': if($_GET){ /* parameters passed*/} (para la solicitud actual) funciona para comprobar si cualquier de cadena de consulta fue aprobada en la solicitud GET o POST.

Esto se debe a que una matriz vacía es false en un contexto booleano if($x).
Ver: http://php.net/manual/en/types.comparisons.php

Así que de hecho no hay necesidad de count() o empty().

Cuestiones relacionadas