Запустите PHP после проверки JS

Я выполняю проверку электронной почты для регистрации администратора с помощью JavaScript и сохраняю данные в базе данных с помощью PHP. Предположительно, регистрация производится только в том случае, если электронная почта действительна. Но когда электронная почта оценивается как недействительная, код PHP все еще выполняется. Как мне сделать так, чтобы когда электронная почта недействительна, PHP не запускался.

Ниже приведен код PHP для сохранения данных в базу данных:

<?php
include('connection.php');

if (isset($_POST['saveBtn']))
{
    $name    = $_POST['name'];
    $ic      = $_POST['ic'];
    $email   = $_POST['email'];
    $pass    = $_POST['pass'];
    $dob     = $_POST['dob'];
    $contact = $_POST['contact'];
    $gender  = $_POST['gender'];
    $des     = $_POST['des'];
    $address = $_POST['address'];


    // Check if data exist
    $check = "SELECT * FROM admin WHERE admEmail = '".$email."' AND admPassword = '".$pass."'";
    if (mysqli_num_rows(mysqli_query($connect,$check)) > 0)
    {
        ?>
        <script>
            alert('This email and password already registered!');
        </script>
        <?php
    }
    else
    {
        $insert = "INSERT INTO admin (admName, admIC, admEmail, admPassword, admDOB, admContact, admGender, admDesignation, admAddress, admDateJoin) VALUES ('".$name."', '".$ic."', '".$email."', '".$pass."', '".$dob."', '".$contact."', '".$gender."', '".$des."', '".$address."', NOW())";
    
        if (mysqli_query($connect, $insert))
        {
            ?>
            <script>
                alert('Insertion Successful!');

                window.close();
                window.opener.location.reload();
            </script>
            <?php
        }
        else
        {
            ?>
            <script>
                alert('Insertion Failed. Try Again!');
            </script>
            <?php
        }
    }
}
?>

Ниже приведен JS:

function validateEmail() {

            var email = document.addAdminForm.email.value;
            var validRegex = /^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)*$/;

            if (email.match(validRegex))
            {
                alert("Valid email address!");
                
                return true;
            }
            else
            {
                document.getElementById("email_error").innerHTML = "Invalid email";

                document.addAdminForm.email.focus();

                return false;
            }

        }

Ниже приведена частичная HTML-форма:

<form class = "w-100" name = "addAdminForm" method = "POST" onsubmit = "validateEmail(this)" action = "add_admin.php">
    <div class = "row">
        <div class = "col form-group">
            <!-- <label for = "email">Email</label> -->
            <input type = "text" class = "form-control" name = "email" placeholder = "Email" required>
            <span class = "error email_error" id = "email_error"></span>
        </div>
    <div class = "float-right">
        <input type = "submit" class = "btn button_primary" value = "Save" name = "saveBtn">
    </div>
</form>

Я ожидаю, что PHP запустится, когда проверка верна

измените свой код на onsubmit = "validate(event)", затем добавьте event.preventDefault(), чтобы отменить отправку формы, если адрес электронной почты недействителен

unloco 20.11.2022 07:35

проверьте этот метод, вам нужно изменить свой html на onsubmit = "return validateEmail()"stackoverflow.com/a/56868812/179545

unloco 20.11.2022 07:39

@unloco спасибо `onsubmit = "return validateEmail()" `работает

Taco Dog 20.11.2022 07:46
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
3
51
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Добавь это:

onsubmit = "return validateEmail(this)"

измените свой JS-код на:

var validRegex = /^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+((\.[a-zA-Z0-9_-]{2,3}){1,2})$/;

зачем добавлять два ответа, когда вы можете отредактировать свой другой ответ и добавить этот код?

OMi Shah 20.11.2022 08:37

Другие вопросы по теме