Проверить строку запроса (PHP)

Я использую строку запроса, например test.php?var=1 .

Как я могу проверить, что пользователь вводит что-либо после этого, как и другая строка …

Я пытаюсь перенаправить на index.php, если любая строка (строка запроса) следует за моей строкой запроса var .

Можно ли это проверить?

Например:

 test.php? var = 12134 (Это хорошая ссылка ..)
 test.php? a = 23 & var = 123 (это плохая ссылка, перенаправление на индекс ..)
 test.php? var = 123132 & a = 23 (это плохая ссылка, перенаправление на индекс ..)

Related of "Проверить строку запроса (PHP)"

Я не уверен, что полностью понимаю, чего вы хотите, но если вы не заинтересованы в позиционировании параметров, это должно работать:

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

Посмотрите в $_SERVER['QUERY_STRING'] .

Как и ответ Тома Хейга, вы также можете получить разницу в аргументах, которые вы ожидаете, и тех, которые вы на самом деле получаете:

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

test.php? a = 23? var = 123 (это плохая ссылка, перенаправление на индекс ..)

В этом случае у вас есть только одна переданная переменная с именем « a », содержащая значение « a?var=123 », поэтому это не должно быть проблемой для вас.

test.php? var = 123132 & a = 23 (это плохая ссылка, перенаправление на индекс ..)

В этом случае вы отправляете две переменные (« a » и « var »).

В общем случае вы можете проверить массив $_GET чтобы увидеть, сколько переменных было отправлено и действовать соответственно, используя count($_GET) .

Я думаю, вы пытаетесь избавиться от нежелательных параметров. Обычно это делается по соображениям безопасности.

Однако не будет проблем, если вы предварительно инициализируете каждую используемую вами переменную и используете только переменные с $ _GET ['var'], $ _POST ['var'] или $ _REQUEST ['var'].