Остановка отправки пустой формы PHP

Я пытаюсь выполнить проверку сервера, чтобы предотвратить пустые письма на моей странице контакта, но я не уверен, как это сделать на PHP, вот мой код:

<?php $field_name = $_POST['cf_name']; $field_email = $_POST['cf_email']; $field_tel = $_POST['cf_tel']; $field_message = $_POST['cf_message']; $mail_to = 'test@test.com, test@test.com, test@test.com'; $subject = 'Just iStuff Mobile Contact Us: '.$field_name; $body_message = 'From: '.$field_name."\n"; $body_message .= 'E-mail: '.$field_email."\n"; $body_message .= 'Telephone Number: '.$field_tel."\n"; $body_message .= 'Message: '.$field_message; $headers = 'From: '.$field_email."\r\n"; $headers .= 'Reply-To: '.$field_email."\r\n"; $mail_status = mail($mail_to, $subject, $body_message, $headers); if ($mail_status) { ?> <script language="javascript" type="text/javascript"> alert('Thank you for your email, we have received your message and will reply within the next few days.'); window.location = 'contactus.html'; </script> <?php } else { ?> <script language="javascript" type="text/javascript"> alert('Message failed, please try again or email test@test.com'); window.location = 'contactus.html'; </script> <?php } ?> 

Может ли кто-нибудь помочь мне сделать это, учебники онлайн не охватывают этот способ сделать это …

благодаря

Solutions Collecting From Web of "Остановка отправки пустой формы PHP"

Перед вашим $ mail_to ..

Вы можете сначала проверить _POST / _GET на стороне сервера.

 <?php if (empty($field_name) && empty($field_email) && empty($field_tel) && empty($field_message)) { echo 'Please correct the fields'; return false; } ?> 

Кроме того, вы можете проверить сначала на стороне клиента. Это сэкономит вам время и ресурсы.

просто проверьте переменную для «пустоты» и выйдите рано. Что-то вроде этого:

 if(empty($field_email)) { // maybe show the user a reason why this was rejected... return; } 

Вероятно, вы захотите сделать это практически для всех полей ввода.

Кроме того, вы можете использовать JavaScript (у jQuery есть несколько хороших плагинов), чтобы не допустить, чтобы пользователь подавал неверные данные. Это не устранит необходимость делать это на стороне сервера (поскольку они могут просто отключить JS, или кто-то злонамеренно может обойти эту меру), но это может сделать его более удобным для пользователя.

Вы можете использовать фильтр для этого; поскольку вы используете переданный адрес электронной почты как часть операции mail() , лучше также проверить:

 $fields = filter_input_array(INPUT_POST, array( 'name' => FILTER_UNSAFE_RAW, 'email' => FILTER_VALIDATE_EMAIL, 'tel' => FILTER_UNSAFE_RAW, 'message' => FILTER_UNSAFE_RAW, )); // check for missing fields if (null === $fields || in_array(null, $fields, true)) { // some or all fields missing } elseif (in_array(false, $fields, true)) { // some or all fields failed validation } else { // all fields passed validation // use $fields['email'] as the email address } 

Я использовал FILTER_UNSAFE_RAW для всех полей, кроме электронной почты, но, возможно, есть более эффективные фильтры.