Я пытаюсь создать контактную форму с помощью PHP, и есть какая-то проблема. Я новичок в PHP, поэтому не мог понять. Форма работает, если не применяется код проверки, но поскольку я применяю код проверки, чтобы некоторые поля могли быть необходимы, форма не работает правильно. Более того, когда я оставляю какое-либо обязательное поле пустым, тогда в их форме не отображается сообщение об ошибке. Может кто-нибудь, пожалуйста, сообщите, в чем проблема.Некоторая проблема с моей контактной формой php
HTML Форма
<form action="mail.php" method="POST" >
Name: <input type="text" name="name"><br/><br/>
Email: <input type="email" name="email"><br/><br/>
Phone Number: <input type="text" name="phone_number"><br/><br/>
Website: <input type="text" name="website"><br/><br/>
Message: <textarea name="message" rows="6" cols="25"></textarea><br/><br/>
<input type="submit" value="Submit">
</form>
Главная PHP файл сценария
<?php
if(isset ($_POST['submit'])) {
$errors = array();
if(!empty ($_POST ['name'])) {
$name = $_POST ['name'];
} else {
$errors[] = "You forgot to enter your Name.";
}
if(!empty ($_POST ['email'])) {
$email = $_POST ['email'];
} else {
$errors[] = "You forgot to enter your Email.";
}
if(!empty ($_POST ['message'])) {
$message = $_POST ['message'];
} else {
$errors[] = "You forgot to enter your Message.";
}
$phone_number = $_POST['phone_number'];
$website = $_POST['website'];
$formcontent = "From: $name \n Email: $email \n Phone Number: $phone_number \n Website: $website \n Message: $message";
$recipient = "[email protected]";
$subject = "Contact Form";
$mailheader = "From: $email \r\n";
mail($formcontent, $recipient, $subject, $mailheader);
if(isset($_POST['submit'])) {
if(!empty($errors)) {
foreach ($errors as $msg)
{
echo '<li>'. $msg . '</li>';
}
} else {
echo "Thank You";
}
}
}
?>
UPDATE Спасибо за ваш отвечает парням, я буквально забыл иметь атрибут имени для кнопки отправки. Это помогло показать некоторый результат. Но теперь некоторые уведомления отображаются для неопределенных переменных как электронная почта, сообщение (если я предоставляю только имя в форме и нажмите кнопку отправки) для $formcontent
и $mailheader
строк.
Поскольку вы» re используя '! empty', вам лучше было бы извлечь этот код и сделать поля формы' required' b y добавляя этот атрибут, особенно если вы используете HTML5. –
'if (isset ($ _POST ['submit']))' у вас нет атрибута имени для отправки, чтобы поддерживать это, поэтому ничто внутри него не будет использоваться. Используя [отчет об ошибках] (http://php.net/manual/en/function.error-reporting.php), было бы отправлено предупреждение Undefined index submit/уведомление. –
ваша кнопка отправки не имеет 'name = 'submit', поэтому' $ _POST ['submit'] 'может быть пустым в первую очередь. Материал почты должен быть в другом месте, где у вас есть «echo» «Спасибо», поскольку вы не хотите отправлять почту, если есть ошибки. И вам не нужно проверять 'if isset ($ _ POST ['submit'])' дважды избыточно –