Как в PHP получить значение checkbox

Как в PHP получить значение checkbox

От автора: приветствую вас, друзья. Из данной статьи, которая написана прежде всего для новичков, вы узнаете, как в PHP получить значение checkbox из формы и обработать его. Эта функция может потребоваться достаточно часто на сайте, например, когда вам нужно в зависимости от того, отмечен был чекбокс или нет выполнить тот или иной код. Приступим.

Исходные файлы текущей статьи вы можете скачать по ссылке.

Классическая ситуация использования в форме чекбокса, который необходимо проверить, это подтверждение соглашения с некими условиями. Еще одним классическим вариантом будет использование поля checkbox в форме авторизации, когда пользователь хочет запомнить себя, чтобы не вводить повторно данные через некоторое время.

Давайте остановимся на втором варианте и создадим простую форму авторизации, в которой присутствует поле checkbox Запомнить меня.

<form class="form-horizontal" method="post" action="login.php">
	<div class="form-group">
		<label for="name" class="col-sm-2 control-label">Логин</label>
		<div class="col-sm-8">
			<input type="text" class="form-control" name="login" placeholder="Логин">
		</div>
	</div>
	<div class="form-group">
		<label for="phone" class="col-sm-2 control-label">Пароль</label>
		<div class="col-sm-8">
			<input type="password" class="form-control" name="password" placeholder="Пароль">
		</div>
	</div>
	<div class="form-group">
		<div class="col-sm-offset-2 col-sm-10">
			<div class="checkbox">
				<label>
					<input type="checkbox" name ="remember"> Запомнить?
				</label>
			</div>
		</div>
	</div>
	<div class="form-group">
		<div class="col-sm-offset-2 col-sm-8">
			<button type="submit" id="submit" class="btn btn-primary">Отправить</button>
			<div></div>
		</div>
	</div>
</form>

Вот такая симпатичная форма у нас получилась:

В качестве обработчика мы указали файл login.php, на который будет отправлена форма. Как принять данные из обычных полей типа text и подобных мы знаем, для этого достаточно обратиться к соответствующему массиву и элементу в этом массиве. Поскольку данные передаются методом POST, то для того, чтобы обратиться к логину пользователя, мы используем следующую запись: $_POST['login']. Именно здесь будет храниться переданный логин пользователя.

С этим все понятно. А как же получить значение чекбокса в PHP? Здесь все также просто. Давайте попробуем распечатать на экран весь массив $_POST целиком в обработчике:

<?php

if(!empty($_POST)){
	echo '<pre>';
	print_r($_POST);
} 

И отправим заполненную форму, отметив чекбокс:

Как видим, в массиве $_POST находятся все элементы формы. При этом значение элемента remember, который отвечает за чекбокс в нашем случае, равно строке on.

Теперь попробуем не отмечать чекбокс и отправим форму еще раз.

Сейчас элемента remember в массиве уже нет. Получается, для того, чтобы проверить, был ли отмечен checkbox, достаточно просто проверить наличие соответствующего элемента в массиве. Также дополнительно можно проверить, равен ли он строке on или же возвращает ли его значение true. Последняя проверка, в принципе, для современных браузеров вряд ли является обязательной, но старые браузеры, помнится, могли создавать в массиве пустой элемент, даже если чекбокс не был отмечен.

В итоге PHP код с учетом обработки значения чекбокса будет выглядеть примерно так:

<?php

if(!empty($_POST)){
	if(!empty($_POST['remember'])){
		echo 'checkbox был отмечен, запоминаем пользователя';
	}else{
		echo 'пользователь не будет запоминаться';
	}
}

Вот, собственно, и вся премудрость. Ну а на этом текущую статью мы завершаем. Дополнительно по работе с формами вы можете посмотреть этот урок. Удачи!

Курс по программированию на языке PHP

Изучите PHP с нуля до результата!

Смотреть курс

Метки:

Комментарии Вконтакте:

Комментарии Facebook:

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Я не робот.

Spam Protection by WP-SpamFree