Вы тестируете, если установлено $_POST['formGender']
, но PHP вернет TRUE
для isset()
в пустой строке. Отсутствие выбора в вашей форме означает, что $_POST['formGender'] == ""
, и это считается «установленным» в проверке isset()
.
Вместо этого проверьте, является ли оно empty()
, которое одновременно проверит, определена ли переменная, как isset()
, и имеет ли она непустое значение.
if(empty($_POST['formGender']))
{
$errorMessage .= "<li>You forgot to select your Gender!</li>";
}
Также проверьте здесь empty()
вместо !isset()
if(!isset($_POST['first_name']) ||
!isset($_POST['last_name']) ||
!isset($_POST['email']) ||
!isset($_POST['telephone']) ||
!isset($_POST['comments'])) {
if(empty($_POST['select']) )
Обновление
Я не совсем уверен, что вы пытаетесь сделать с этим. Но 3DModels, Graphic Design, etc
не будет частью массива $_POST
. Они являются потенциальными значениями $_POST['select']
. Я не понимаю, каково ваше намерение здесь.
if(empty($_POST['select']) )
{
$var3dmodels = $_POST['3DModels'];
$vargraphic_design = $_POST['Graphic Design'];
$varweb_design = $_POST['Web Design'];
$vartutorials = $_POST['Tutorials'];
$varreport = $_POST['Report'];
$varrequests = $_POST['Requests'];
}
Источник вашей проблемы:
Я наконец вижу, где ваша ошибка. Вместо $error_message
вы используете $errorMessage
для $_POST['select']
:
if(empty($_POST['select']))
{
// Oops...
$errorMessage .= 'The selection you made does not appear to be valid.<br />';
// Should be
$error_message .= 'The selection you made does not appear to be valid.<br />';
}
Вы должны включить error_reporting
и display_errors
в PHP.ini только для разработки и тестирования. Неинициализированная переменная, такая как $errorMessage .= ...
, выдаст уведомление, и вы увидите ошибку на экране. Выключите это для производственного кода.
// Report all errors and notices
error_reporting(E_ALL);
ini_set('display_errors', 1);