2016-06-01 18 views
-1

Leider konnte ich die Antwort in anderen Fragen nicht finden, obwohl einige von ihnen ähnlich zu sein scheint. Ich bin neu bei phpmailer, aber ich habe es erfolgreich geschafft, E-Mails erfolgreich über SMTP zu senden, indem ich den folgenden Code benutze. Ich möchte jedoch aufhören, E-Mails mit leeren Feldern zu senden, aber ich kann kein richtiges Beispiel dafür finden, und ich würde gerne beraten, wie man das Senden von E-Mails stoppt, wenn Felder leer sind oder wie man Felder benötigt. (Ich weiß, wie man clientseitige Validierung durchführt, aber die Serverseite ist ein Problem). Siehe unten:phpmailer wie überprüft man, ob Feld leer ist sinthax

<?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); 
} 
?> 

Antwort

1

Sie müssen nur einige Prüfungen in Ihre if-Anweisung einbinden. empty() ist für für leere Überprüfung, null oder 0 Felder

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

Sie können vor Ihrer if Aussage einige Prüfungen durchführen, um sicherzustellen, werden die Felder ausgefüllt und gültig ist, und einen Fehler aus, wenn sie nicht sind.

+0

Vielen Dank. Es funktioniert perfekt. – Aleksandar

0

Folgen Sie was @anyber hat vorgeschlagen, ich wollte nur nachverfolgen und Sie wissen, dass basierend auf Ihrem Code sieht dies aus wie ein Kontaktformular uns.

Sie möchten den Absender nicht auf die E-Mail-Adresse festlegen, die im Formular eingegeben wurde. Sie sollten dies an Ihrer E-Mail-Adresse ändern. Das Festlegen der Absenderadresse mit der E-Mail-Adresse einer anderen Person kann zu vielen Problemen führen. Wenn dieser Benutzer über DMARC oder andere Authentifizierungsmethoden verfügt, sollten Sie sich diese Ressource ansehen: Common Contact US Problems

+0

Vielen Dank für Ihren Kommentar und die Bestätigung, aber um sicher zu gehen, beziehen Sie sich auf: $ mail-> SetFrom ($ _ POST ['email'], $ _POST ['name']); ? – Aleksandar

+0

Ja, ändere das in '$ mail-> SetFrom ('Deine E-Mail-Adresse', 'Dein Name');' Dann in der Betreffzeile mit 'CU - Was immer du willst' anfangen, was du weißt, wenn es von dir kommt Kontaktieren Sie uns. – Henry

+0

Danke, aber ich bin mir nicht sicher, ob ich verstehe, was Sie meinen "Dann in der Betreffzeile mit 'CU" beginnen – Aleksandar