• 18-03-2021, 10:43:17
    #1
    İyi günler, PHPMailer kullanıyorum fakat iletişim formundan gelen verilerden "AdSoyad", "Telefon" ve "Konu" alanları zorunlu olması için PHPMailer dosyamda kontrol yapıyorum fakat bahsettiğim üç alan boş olsa bile mail gönderiliyor. Bunu nasıl düzeltebilirim ?

    PHP Mailer ve Kontrol Kodum:
    <?php
        use PHPMailer\PHPMailer\PHPMailer;
        use PHPMailer\PHPMailer\Exception;
    
        require 'PHPMailer/src/Exception.php';
        require 'PHPMailer/src/PHPMailer.php';
        require 'PHPMailer/src/SMTP.php';
        
        if(isset($_POST["ContactForm"])) {
    
            $NameSurname = $_POST['NameSurname'];
            $PhoneNo = $_POST['PhoneNo'];
            $Email = $_POST['Email'];
            $Subject = $_POST['Subject'];
            $Message = $_POST['Message'];
    
            if (!$_POST['NameSurname'])
            {
                Header('Location:index.php?adyok');
            }
    
            if (!$_POST['PhoneNo'])
            {
                Header('Location:index.php?telefonyok');
            }
    
            if (!$_POST['Subject'])
            {
                Header('Location:index.php?konuyok');
            }
    
            $mail = new PHPMailer(true);
            try {
            //Server settings
            $mail->setLanguage('tr'); // Dil ayarı.
            $mail->CharSet = 'UTF-8';
            $mail->SMTPDebug = 0; // debug on - off
            $mail->isSMTP();
            $mail->Host = 'xxxxxx'; // SMTP sunucusu örnek : mail.alanadi.com
            $mail->SMTPAuth = true; // SMTP Doğrulama
            $mail->Username = 'xxxxxx '; // Mail kullanıcı adı
            $mail->Password = 'xxxxxx '; // Mail şifresi
            $mail->SMTPSecure = 'tls'; // Şifreleme
            $mail->Port = 587; // SMTP Port
            $mail->SMTPOptions = array(
            'ssl' => array(
            'verify_peer' => false,
            'verify_peer_name' => false,
            'allow_self_signed' => true
            )
            );
            
            $mail->setFrom($Email, $Subject); //Gonderen mail
            $mail->addAddress('xxxxxx'); //Alıcı mail
            $mail->addReplyTo($Email, $Subject);
            //İçerik
            $mail->isHTML(true);
            $mail->Subject = 'İletişim Formu - '.$Subject;
            $mail->Body = $Message.'<br>'.$PhoneNo;
            
            $mail->send();
            
            Header('Location:index.php?mail=ok');
            } catch (Exception $e) {
            echo 'Mesajınız İletilemedi. Hata: ', $mail->ErrorInfo;
            Header('Location:index.php?mail=no');
            }
        }
    ?>
  • 18-03-2021, 10:54:51
    #2
    <?php
        use PHPMailer\PHPMailer\PHPMailer;
        use PHPMailer\PHPMailer\Exception;
     
        require 'PHPMailer/src/Exception.php';
        require 'PHPMailer/src/PHPMailer.php';
        require 'PHPMailer/src/SMTP.php';
        
        if(isset($_POST["ContactForm"])) {
     
            $NameSurname = trim($_POST['NameSurname']);
            $PhoneNo = trim($_POST['PhoneNo']);
            $Email = trim($_POST['Email']);
            $Subject = trim($_POST['Subject']);
            $Message = trim($_POST['Message']);
     
           if($NameSurname != ""  && $PhoneNo != "" )
     {
            $mail = new PHPMailer(true);
            try {
            //Server settings
            $mail->setLanguage('tr'); // Dil ayarı.
            $mail->CharSet = 'UTF-8';
            $mail->SMTPDebug = 0; // debug on - off
            $mail->isSMTP();
            $mail->Host = 'xxxxxx'; // SMTP sunucusu örnek : mail.alanadi.com
            $mail->SMTPAuth = true; // SMTP Doğrulama
            $mail->Username = 'xxxxxx '; // Mail kullanıcı adı
            $mail->Password = 'xxxxxx '; // Mail şifresi
            $mail->SMTPSecure = 'tls'; // Şifreleme
            $mail->Port = 587; // SMTP Port
            $mail->SMTPOptions = array(
            'ssl' => array(
            'verify_peer' => false,
            'verify_peer_name' => false,
            'allow_self_signed' => true
            )
            );
            
            $mail->setFrom($Email, $Subject); //Gonderen mail
            $mail->addAddress('xxxxxx'); //Alıcı mail
            $mail->addReplyTo($Email, $Subject);
            //İçerik
            $mail->isHTML(true);
            $mail->Subject = 'İletişim Formu - '.$Subject;
            $mail->Body = $Message.'<br>'.$PhoneNo;
            
            $mail->send();
            
            Header('Location:index.php?mail=ok');
            } catch (Exception $e) {
            echo 'Mesajınız İletilemedi. Hata: ', $mail->ErrorInfo;
            Header('Location:index.php?mail=no');
            }
        }
    }
    ?>
    Şu şekil yapabilirsiniz. Boş gelmesini istemediğiniz alanları if sorgusunun içine ekleyebilirsiniz.
  • 18-03-2021, 10:57:42
    #3
    post değerleri boş kontrolünü empty($_POST['NameSurname']) yaparak kontrol ediniz.
  • 18-03-2021, 11:11:29
    #4
    Header verdikten sonra exit; çekmediğinden dolayı devam ediyor.