2009-10-21 5 views
2

J'utilise une chaîne de requête, par exemple test.php?var=1.Vérifier la chaîne de requête (PHP)

Comment puis-je vérifier si un utilisateur tape quelque chose après, comme une autre chaîne ...

J'essaie de rediriger vers index.php si une autre chaîne (chaîne de requête) suit ma var chaîne de requête.

Est-il possible de vérifier cela?

Par exemple:

 
test.php?var=12134 (This is a good link..) 
test.php?a=23&var=123 (this is a bad link, redirect to index..) 
test.php?var=123132&a=23 (this is a bad link, redirect to index..) 

Répondre

18

Je ne suis pas sûr que je comprends parfaitement ce que vous voulez, mais si vous n'êtes pas intéressé par le positionnement des paramètres cela devrait fonctionner:

if (isset($_GET['var']) && count($_GET) > 1) { 
    //do something if var and another parameter is given 
} 
+0

Je n'ai qu'un seul paramètre de requête, donc cette solution est bonne pour moi ... Merci beaucoup. –

6

Rechercher dans $_SERVER['QUERY_STRING'].

0

test.php a = 23? var = 123 (ce qui est un mauvais lien, rediriger vers index ..)

Dans ce cas, vous avez seulement une variable envoyé, nommé « a » contenant la valeur « a?var=123 », donc il ne devrait pas être un problème pour toi.

test.php? Var = 123132 & a = 23 (ce qui est un mauvais lien, rediriger vers index ..)

Dans ce cas, vous avez deux variables envoyées ("a" et "var").

En général, vous pouvez vérifier le tableau $_GET pour voir combien de variables ont été envoyées et agir en conséquence, en utilisant count($_GET).

+0

J'ai édité ma question, mais votre solution est la même que Tom. Je vous remercie! –

2

similaires à la réponse de Tom Haigh, vous pouvez aussi obtenir la différence des arguments que vous attendez et ceux que vous obtenez en fait:

$argKeys = array_keys($_GET); 
$additionalArgKeys = array_diff($argKeys, array('var')); 
var_dump($additionalArgKeys); 
+0

vraiment élégant! Je vous remercie! –

0

Je pense que vous essayez de vous débarrasser des paramètres indésirables. Ceci est généralement fait pour des raisons de sécurité.

Il n'y aura pas de problème si vous initialisez toutes les variables et n'utilisez que des variables avec $ _GET ['var'], $ _POST ['var'] ou $ _REQUEST ['var'].

Questions connexes