Запустите 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
Создайте ползком, похожим на звездные войны, с помощью CSS и Javascript
Создайте ползком, похожим на звездные войны, с помощью CSS и Javascript
Если вы веб-разработчик (или хотите им стать), то вы наверняка гик и вам нравятся "Звездные войны". А как бы вы хотели, чтобы фоном для вашего...
учебник по Javascript
учебник по Javascript
JavaScript - это язык программирования, который обычно используется для добавления интерактивности и других динамических функций на веб-сайты. Он...
Как использовать d3.js для рисования 2D SVG-элементов в приложении Angular?
Как использовать d3.js для рисования 2D SVG-элементов в приложении Angular?
D3.js - это обширная библиотека, используемая для привязки произвольных данных к объектной модели документа (DOM). Мы разберем основные варианты...
Освоение принципов SOLID в JavaScript: Пошаговое руководство
Освоение принципов SOLID в JavaScript: Пошаговое руководство
Принцип единой ответственности (SRP): класс должен иметь только одну причину для изменения. Другими словами, у него должна быть только одна...
JavaScript - For Loop
JavaScript - For Loop
Наиболее используемая компактная форма оператора цикла.
Неделя 1 - Карточки с временной шкалой
Неделя 1 - Карточки с временной шкалой
Поскольку это была первая неделя, я решил начать с простого. Предполагалось, что у меня будет временная шкала с несколькими карточками, которые можно...
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

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