Я использую строку запроса, например test.php?var=1
.
Как я могу проверить, что пользователь вводит что-либо после этого, как и другая строка …
Я пытаюсь перенаправить на index.php, если любая строка (строка запроса) следует за моей строкой запроса var
.
Можно ли это проверить?
Например:
test.php? var = 12134 (Это хорошая ссылка ..) test.php? a = 23 & var = 123 (это плохая ссылка, перенаправление на индекс ..) test.php? var = 123132 & a = 23 (это плохая ссылка, перенаправление на индекс ..)
Я не уверен, что полностью понимаю, чего вы хотите, но если вы не заинтересованы в позиционировании параметров, это должно работать:
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'].