phpmailer как проверить, является ли поле пустым синтаксис

К сожалению, я не смог найти ответ на другие вопросы, хотя некоторые из них кажутся похожими. Я новичок в phpmailer, но мне удалось успешно отправить электронную почту через smtp, используя приведенный ниже код. Тем не менее, я хочу прекратить отправлять электронные письма с пустыми полями, но я не могу найти правильный синтаксис для этого, и я был бы признателен за совет, как остановить отправку электронной почты, если поля пусты, или как сделать поля обязательными. (Я знаю, как сделать проверку на стороне клиента, но проблема на стороне сервера). Пожалуйста, смотрите ниже:

<?php
if(isset($_POST['submit'])) {  
$message=
'Name:  '.$_POST['name'].'<br />
Subject:    '.$_POST['subject'].'<br />
Email:  '.$_POST['email'].'<br />
Message:    '.$_POST['message'].'';
require "PHPMailer-master/class.phpmailer.php";    
$mail = new PHPMailer();      
require "smtp.php";   
$mail->SetFrom($_POST['email'], $_POST['name']);
$mail->AddReplyTo($_POST['email'], $_POST['name']);
$mail->Subject = "Message from www";  
$mail->MsgHTML($message); 
$mail->AddAddress("[email protected]", " First receipient");
$mail->AddCC("[email protected]", "Second receipient");
$result = $mail->Send();  
$message = $result ? '<div class="alert alert-success" role="alert"> Message    has been sent ! </div>': '<div class="alert alert-danger" role="alert"><strong>Error!</strong> !</div>';  
unset($mail);
}
?> 

person Aleksandar    schedule 01.06.2016    source источник


Ответы (2)


Вам просто нужно добавить несколько проверок в оператор if. empty() отлично подходит для проверки пустых, пустых или нулевых полей.

if(isset($_POST['submit']) 
   && !empty($_POST['name'])  
   && !empty($_POST['subject'])  
   && !empty($_POST['email'])  
   && !empty($_POST['message'])) {

Вы можете выполнить некоторую проверку перед своим оператором if, чтобы убедиться, что поля заполнены и действительны, и выдать ошибку, если это не так.

person aynber    schedule 01.06.2016

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

Вы не хотите устанавливать адрес электронной почты, указанный в форме, вы должны изменить его на свой адрес электронной почты. Установка отправителя с чужой электронной почтой может привести к множеству проблем, если у этого пользователя включен DMARC или другие методы аутентификации, взгляните на этот ресурс: Распространенные проблемы с контактами в США

person Henry    schedule 01.06.2016
comment
Спасибо за ваш комментарий и предложение, но, чтобы убедиться, вы ссылаетесь на: $mail->SetFrom($_POST['email'], $_POST['name']); ? - person Aleksandar; 02.06.2016
comment
Да, измените это на $mail->SetFrom('Your Email Address','Your Name'); Затем в строке темы начните с «CU - все, что вы хотите», это то, что вы знаете, если пришло из вашей формы для связи с нами. - person Henry; 02.06.2016
comment
Спасибо, но я не уверен, что понимаю, что вы имеете в виду под «Тогда в строке темы» начните с «CU». - person Aleksandar; 02.06.2016
comment
Просто это$mail->Subject = 'CU - Message from www'; - person Henry; 03.06.2016
comment
Спасибо за разъяснение - person Aleksandar; 03.06.2016