Skip to content
Advertisement

Run PHP after JS validation

I am doing email validation for admin registration using JavaScript and save the data to database using PHP. Supposedly, the registration is done only if the email is valid. But when the email evaluates to invalid, the PHP code still run. How do I do it so that when the email is invalid, the PHP won’t run.

Below is the PHP code to save data to database:

<?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
        }
    }
}
?>

Below is the 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;
            }

        }

Below is the partial HTML form:

<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>

I expect PHP run when validation is true

Advertisement

Answer

add this:

onsubmit="return validateEmail(this)"
User contributions licensed under: CC BY-SA
8 People found this is helpful
Advertisement