Я написал код в 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>