Будет ли достаточно !isset($_POST['tosagree'])
, зависит от браузера.
Для безопасности всегда устанавливайте атрибут value
для флажка.Затем вы просто проверяете, присутствует ли это значение:
<input type='checkbox' value='agreed'/>
Затем выполните это:
if (!isset($_POST['tosagree']) || $_POST['tosagree'] != "agreed" ) {
$errors[] = '<span>Please agree to the Terms of Service.<span>';
}
Кроме того, когда атрибут value
явно не указан, браузеры обычно устанавливаютvalue
до On
, когда это проверено.
Редактировать
Хорошо, я знаю, что происходит.В вашем PHP-коде у вас есть этот блок:
if (!isset($_POST['tosagree']) || $_POST['tosagree'] != "agreed") {//if the user did not agree to ToS
$errors[] = '<span>Please agree to the Terms of Service.<span>';
}
Тогда позже у вас есть эта строка:
if ($un && $e && $p && $ic) { //if there are no errors
Проблема в том, что у вас нет флага для того, когда TOSфлажок не установленОшибка не может быть напечатана, потому что в операторе if
вы вызываете exit()
.