Как проверить, получен ли $ _GET или нет? (PHP) - PullRequest
1 голос
/ 21 марта 2011

У меня есть форма на странице. В нем слишком много таких вещей, как флажки, текстовые поля и выпадающие списки. Но когда я не выбираю один из флажков, страница PHP, где я ловлю форму, показывает мне ошибку.

Пример:

Код HTML:

Checkbox 1<input type="checkbox" name="check1" value="on" />
Checkbox 2<input type="checkbox" name="check2" value="on" />

Код PHP:

$check1 = $_GET['check1'];
$check2 = $_GET['check2'];

Работает нормально, если оба элемента выбраны и отправлены в URL:

localhost/project/checkbox.php?check1=on&check2=on

Но когда я отменил выбор 1 из них, предположим, что check2, тогда URL выглядит так:

localhost/project/checkbox.php?check1=on

и это показывает мне ошибку - $ check2 - неопределенный индекс.

Но я не хочу, чтобы он показывал ошибку, если флажок не установлен. Я также попробовал оператор if, чтобы проверить, получаю ли я его в URL, но он не работает.

Есть ли способ сначала проверить, передаются ли данные в URL или нет? Как я не понимаю ошибку. На самом деле ошибка не главное, так как я получаю правильные результаты и знаю, что могу отключить создание отчетов об ошибках в php.ini, но это не то, что я хочу сделать. Я хочу сначала проверить, поступают ли данные?

Спасибо ...

Ответы [ 2 ]

2 голосов
/ 21 марта 2011

if (isset($_GET['check2']) && !empty($_GET['check2']) выполнит проверку, если параметр check2 GET присутствует и не пуст.

0 голосов
/ 21 марта 2011

Значение флажка регистрируется только тогда, когда оно установлено.Таким образом, вы можете просто выполнить проверку следующим образом:

$check1 = isset($_GET['check1']);
$check2 = isset($_GET['check2']);

$check1 и $check2 теперь будут иметь логические значения:

echo "Checkbox 1 one is " . ($check1 ? "checked" : "not checked") . PHP_EOL;
echo "Checkbox 2 one is " . ($check2 ? "checked" : "not checked") . PHP_EOL;
...