Я написал несколько jquery, html и php-код для контакта формы электронной почты, но что-то не так - PullRequest
0 голосов
/ 29 мая 2019

Я написал код в html, php и jquery, чтобы можно было создавать форму электронной почты на веб-сайте.

Однако при тестировании возникли некоторые проблемы:

1) проблема с проверками: в моем коде jquery, чтобы предотвратить отправку формы перед проверкой, все ли поля в порядке, я поставил ~ e.preventDefault (); Вставьте код JQuery. Затем, если я попытаюсь отправить форму, скрипт проверит, все ли поля в порядке, и покажет ошибки внутри полей ввода для входных данных, которые не в порядке. И, конечно же, это не будет отправлять почту. Но если я правильно заполню все поля, письмо тоже не будет отправлено.

2) с другой стороны, если я удалю вышеупомянутую ~ e.preventDefault (); ~ код, чем сценарий обходит проверку полей, проверяет и отправляет оповещения (для полей, которые не были правильно написаны) через сообщения с предупреждением об исключении.

3) если все остальные поля заполнены правильно, сценарий также требует отправки вложения. Как это предотвратить.

Пожалуйста, помогите, очевидно, я допустил некоторые ошибки в коде.

Мой код:

HTML код:

<form id="kontakt_obrazac" name="kontakt_obrazac" method="POST" action="php/kontakt.php" enctype="multipart/form-data">
    <ul>
        <li id="ime"><input type="text" name="ime" placeholder="Ime i prezime" id="input_ime" /></li>
        <li id="mail"><input type="text" name="mail" placeholder="Mail" id="input_mail" /></li>
        <li id="naslov"><input type="text" name="naslov" placeholder="Naslov" id="input_naslov" /></li>
        <li id="poruka"><textarea name="poruka" placeholder="Poruka" id="input_poruka"></textarea></li>
        <li id="file"><input type="file" name="attachment" value="" id="input_file" /></li>
        <li id="posalji"><input type="submit" name="submit_btn" value="Pošalji" class="submit_btn" /></li>
        <li id="ponisti"><input type="reset" name="reset_btn" value="Poništi" /></li>
    </ul>
</form>

PHP-код:

<?php
/* Namespace alias. */
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;

/* Include the Composer generated autoload.php file. */
require 'C:\xampp\composer\vendor\autoload.php';

/* Create a new PHPMailer object. Passing TRUE to the constructor enables exceptions. */
$mail = new PHPMailer(TRUE);

/* Open try/catch block. */
try
{
if(isset($_POST['submit_btn']))
{

    $user_name = $_POST['ime'];
    $user_mail = $_POST['mail'];
    $subject = $_POST['naslov'];
    $message = $_POST['poruka'];


    /* Set the mail sender. */
    $mail->setFrom($_POST['mail'], $_POST['ime']);

    /* Add a recipient. */
    $mail->addAddress('nebojsano@gmail.com');

    /* Set the subject. */
    $mail->Subject = $_POST['naslov'];

    /* Set the mail message body. */
    $mail->Body = ($_POST['poruka']);


    /* SMTP parameters. */

    /* Tells PHPMailer to use SMTP. */
    $mail->isSMTP();

    /* SMTP server address. */
    $mail->Host = 'smtp.gmail.com';

    /* Use SMTP authentication. */
    $mail->SMTPAuth = TRUE;

    /* Set the encryption system. */
    $mail->SMTPSecure = 'tls';

    /* SMTP authentication username. */
    $mail->Username = 'nebojsano@gmail.com';

    /* SMTP authentication password. */
    $mail->Password = 'mmajke';

    /* Set the SMTP port. */
    $mail->Port = 587;


    /* Add an attachment */
    $mail->addAttachment($_FILES['attachment']['tmp_name'],$_FILES['attachment']['name']);

    /* Set a reply-to address */
    $mail->addReplyTo($_POST['mail'], $_POST['ime']);

    /* Add CC and BCC recipients */
    // $mail->addCC('stones2n@hotmail.com');


    /* Enable SMTP debug output. */
    //$mail->SMTPDebug = 4;

    /* Disable some SSL checks. */
        $mail->SMTPOptions = array(
            'ssl' => array(
            'verify_peer' => false,
            'verify_peer_name' => false,
            'allow_self_signed' => true
          )
       );

    /* Finally send the mail. */
    if(!$mail->Send())
    {
        $error = "Mailer Error: " . $mail->ErrorInfo;
        echo "Problem in Sending Mail.";
    }
    else
    {
        echo "Mail Sent.";
    }

}
}
catch (Exception $e)
{
    echo $e->errorMessage();
}
catch (\Exception $e)
{
    echo $e->getMessage();
}
?>

JQUERY код:

<script>

$(document).ready(function() {

    $('#kontakt_obrazac').submit(function(e) {
    e.preventDefault();
        var ime = $('#input_ime').val();
        var mail = $('#input_mail').val();
        var naslov = $('#input_naslov').val();
        var poruka = $('#input_poruka').val();
        var attachment = $('#input_file').val();

        $(".error").remove();

        if (ime.length < 1) {
            $('#input_ime').css({color: "#ff0000"});
            $('#input_ime').css({border: "1px solid #ff0000"});
            $('#input_ime').attr('placeholder', 'Obavezno polje');
        } else {
            $('#input_ime').css({color: "#006600"});
            $('#input_ime').css({border: "none"});
        }

        if (mail.length < 1) {
            $('#input_mail').css({color: "#ff0000"});
            $('#input_mail').css({border: "1px solid #ff0000"});
            $('#input_mail').attr('placeholder', 'Obavezno polje');
        } else {
            var reg_ex = /^[A-Za-z0-9][A-Za-z0-9._%+-]{0,63}@(?:[A-Za-z0-9-]{1,63}\.){1,125}[A-Za-z]{2,63}$/;
            var valid_mail = reg_ex.test(mail);
            if (valid_mail) {
                $('#input_mail').css({color: "#006600"});
                $('#input_mail').css({border: "none"});
            } else {
                $('#input_mail').css({color: "#ff0000"});
                $('#input_mail').css({border: "1px solid #ff0000"});
            }
        }

        if (naslov.length < 1) {
            $('#input_naslov').css({color: "#ff0000"});
            $('#input_naslov').css({border: "1px solid #ff0000"});
            $('#input_naslov').attr('placeholder', 'Obavezno polje');
        } else {
            $('#input_naslov').css({color: "#006600"});
            $('#input_naslov').css({border: "none"});
        }

        if (poruka.length < 1) {
            $('#input_poruka').css({color: "#ff0000"});
            $('#input_poruka').attr('placeholder', 'Obavezno polje');
        } else {
            $('#input_poruka').css({color: "green"});
        }

    });

});

</script>

1 Ответ

0 голосов
/ 29 мая 2019

В вашем коде jquery, когда вы выполняете warnDefault, в конце вашей проверки вы можете вернуть false, если проверка не прошла, и вернуть true, чтобы продолжить публикацию формы.Не уверен, что вы имеете в виду под 3-й проблемой.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...