PHP在表单提交失败时返回JQuery


PHP echoing JQuery on failed form submit

我在PHP注册表单的工作。表单是一个div,当您单击按钮时打开。下面是我的代码:

 if(!$fieldsFilled){  
 $unfilledFormsError = '<br><font class="text-error" id="unfilled-forms-error">One of more of the fields are empty.</font><br>';
                echo "
                <script type='text/javascript'>
                $(document).ready(function(){
                    $('#home-sign-up-box').show();
                    console.log('test passed');
                });
                </script>";
}

这些都在我的表单提交后执行:

    if (isset($_POST['signUp'])) 
完整的PHP代码:
    <?php require 'dbconnect.php'; ?>
<?php
    //Error message variable declarations
    $unmatchedPasswordsError = "";
    $unfilledFormsError = "";
    $emailError = "";
    //If sign up submit POST recieved
    if (isset($_POST['signUp'])) 
    {
        //Start session
        session_start();
        $email = $connection->real_escape_string($_POST['suEmail']);
        $result = mysqli_query($connection, "SELECT * FROM users WHERE email='".$email."'");
        if ($result->num_rows) 
        {
            $emailInUse = true;
        } 
        else
        {
            $emailInUse = false;
        }
        //Search for empty fields
        $required = array('suFirstName', 'suLastName', 'suEmail', 'suPassword', 'suVerifyPassword', 'suDisplayName');
        $fieldsFilled = true;
        foreach($required as $field) 
        {
            if (empty($_POST[$field])) 
            {
                $fieldsFilled = false;
            }
            else 
            {
                $fieldsFilled = true;
            }
        }
        if ($emailInUse)
        {
            $emailError = "The email is already in use.";
            echo "
            <script type='text/javascript'>
               $(document).ready(function(){
                    $('#home-sign-up-box').show();
                });
            </script>";
        }
        else
        {   
            if(!$fieldsFilled)
            {   
                $unfilledFormsError = '<br><font class="text-error" id="unfilled-forms-error">One of more of the fields are empty.</font><br>';
                echo "
                <script type='text/javascript'>
                $(document).ready(function(){
                    $('#home-sign-up-box').show();
                    console.log('test passed');
                });
                </script>";
            }
            else
            {
                if (!filter_var($email, FILTER_VALIDATE_EMAIL))
                {
                    $emailError = "The email is not valid.";
                    echo "
                    <script type='text/javascript'>
                    $(document).ready(function(){
                        $('#home-sign-up-box').show();
                    });
                    </script>";
                }
                else 
                {
                    //Check for unverified password
                    if ($_POST['suPassword']!= $_POST['suConfirmPassword'])
                    {
                        $unmatchedPasswordsError = "The passwords do not match.";
                        echo "
                        <script type='text/javascript'>
                        $(document).ready(function(){
                            $('#home-sign-up-box').show();
                        });
                        </script>";
                    }
                    else 
                    {
                        //Variable declaration for sign up POST values
                        $suFirstName = $_POST['suFirstName'];
                        $suLastName = $_POST['suLastName'];
                        $suEmail = $_POST['suEmail'];
                        $suPassword = $_POST['suPassword'];
                        $suDisplayName = $_POST['suDisplayName'];
                        //Insert POST values into database
                        $sql = $connection->query("INSERT INTO users (firstName,lastName,email,password,displayName)Values('{$suFirstName}','{$suLastName}','{$suEmail}','{$suPassword}','{$suDisplayName}')");
                        //Redirect to 'email sent' webpage
                        header('Location: emailSent.php');
                    }
                }
            }
        }
    }
    //If log in submit POST recieved
    if (isset($_POST['logIn']))
    {
        //Variable declaration for log in POST values
        $liEmail = $_POST['liEmail'];
        $liPassword = $_POST['liPassword'];
        //Search for log in credentials in dabase
        $result = $connection->query("select * from users where email = '$liEmail' AND password = '$liPassword'");
        $row = mysqli_fetch_array($result, MYSQLI_BOTH);
        //TODO: CHECK FOR REMEMBER ME CHECK
        session_start();
        $_SESSION['userID'] = $row['userID'];
    }?>

HTML注册div/form code:

    <!-- Sign Up Box -->
        <div class="sign-up-box" id="home-sign-up-box">
            <img src="images/icons/x-close.png" class="x-close" id="home-sign-up-close" src="x-close">
            <font class="subheader-bold font-raleway" id="box-sign-up-text">Sign Up</font>
            <form method="post" action="" id="home-sign-up-form">
                <input type="text" name="suFirstName" placeholder="First Name" class="text-input-minor" id="sign-up-first-name-text-input" value="<?php if(isset($_POST['suFirstName'])){echo $_POST['suFirstName'];}?>">
                <input type="text" name="suLastName" placeholder="Last Name" class="text-input-minor" id="sign-up-last-name-text-input" value="<?php if(isset($_POST['suLastName'])){echo $_POST['suLastName'];}?>">
                <input type="text" name="suEmail" placeholder="Email" class="text-input-minor" id="sign-up-email-text-input"value="<?php if(isset($_POST['suEmail'])){echo $_POST['suEmail'];}?>">
                <?php 
                    echo '<br><font class="text-error" id="email-error">',$emailError,'</font>'; 
                ?>
                <input type="password" name="suPassword" placeholder="Password" class="text-input-minor" id="sign-up-password-text-input">
                <input type="password" name="suConfirmPassword" placeholder="Confirm Password" class="text-input-minor" id="sign-up-confirm-password-text-input">
                <?php 
                    echo '<br><font class="text-error" id="passwords-unmatched-error">',$unmatchedPasswordsError,'</font>'; 
                ?>
                <input type="text" name="suDisplayName" placeholder="Display Name (you can change this later)" class="text-input-minor" id="sign-up-display-name-text-input" value="<?php if(isset($_POST['suDisplayName'])){echo $_POST['suDisplayName'];}?>">
                <?php 
                    echo $unfilledFormsError; 
                ?>
                <label><input type="checkbox" name="suRememberMe" value="yes" id="sign-up-remember-me-checkbox"><font id="sign-up-remember-me-text">Remember me</font></label>
                <input name="signUp" type="submit" value="Sign Up" id="sign-up-submit">
            </form>
            <font class="text-minor" id="agree-tos-pp-text">By signing up, you agree to our <a href="#">terms of service</a> and <br><a href="#">privacy policy</a>.</font>
        </div>

"test passed"确实记录到控制台,但是div在页面刷新后没有显示(由于表单提交)。任何帮助都是感激的!非常感谢!

我已经根据您的要求和我使用的数据库连接进行了定制Mysqli替换你想要的,也改变数据库凭证。

完整代码将在同一页。

<?php
   session_start();
   //require 'dbconnect.php'; 
   $connection=mysqli_connect("localhost","root","","test"); // I have use it for testing
    $errors = array();
    if (isset($_POST['signUp'])) {
        $email = mysqli_real_escape_string($connection, $_POST['suEmail']);
        $result = mysqli_query($connection, "SELECT * FROM users WHERE email='".$email."'");
        //email check
        if(mysqli_num_rows($result)>0){
            $errors[] = "The email is already in use.";
        }elseif(!filter_var($email, FILTER_VALIDATE_EMAIL)){
            $errors[] = "The email is not valid.";
        }
        //Search for empty fields
        $required = array('suFirstName', 'suLastName', 'suEmail', 'suPassword', 'suConfirmPassword', 'suDisplayName');
        foreach($required as $field){
            if (empty($_POST[$field])){
                $errors[] = $field." Cannot be empty.";
            }
        }
        if(count($errors)==0){
            if($_POST['suPassword']!=$_POST['suConfirmPassword']){
                $errors[] = "The passwords do not match.";
            }else{
                $suFirstName = $_POST['suFirstName'];
                $suLastName = $_POST['suLastName'];
                $suEmail = $_POST['suEmail'];
                $suPassword = $_POST['suPassword'];
                $suDisplayName = $_POST['suDisplayName'];
                //$sql = $connection->query("INSERT INTO users (firstName,lastName,email,password,displayName)Values('{$suFirstName}','{$suLastName}','{$suEmail}','{$suPassword}','{$suDisplayName}')");
                $sql = mysqli_query($connection, "INSERT INTO users (firstName,lastName,email,password,displayName)Values('{$suFirstName}','{$suLastName}','{$suEmail}','{$suPassword}','{$suDisplayName}')");
                if($sql){
                    header('Location: emailSent.php');
                }else{
                    $errors[] = "Failed to insert.";
                }
            }
        }
    }
    if (isset($_POST['logIn'])){
        $liEmail = $_POST['liEmail'];
        $liPassword = $_POST['liPassword'];
        //$result = $connection->query("select * from users where email = '$liEmail' AND password = '$liPassword'");
        $result = mysqli_query($connection, "select * from users where email = '$liEmail' AND password = '$liPassword'");
        if($result){
            $row = mysqli_fetch_assoc($result);
            $_SESSION['userID'] = $row['userID'];
        }
    }
?>
<?php 
    if(!empty($errors)){
        foreach ($errors as $value) {
            echo "<span style='color:red;'>".$value."</span><br>";
        }
    }
?>
<button type="button" id="showSignup">Show Sign-up</button><br><br>
<!-- Sign Up Box -->
<div class="sign-up-box" id="home-sign-up-box">
    <img src="images/icons/x-close.png" class="x-close" id="home-sign-up-close" src="x-close">
    <font class="subheader-bold font-raleway" id="box-sign-up-text">Sign Up</font>
    <form method="post" action="" id="home-sign-up-form">
        <input type="text" name="suFirstName" placeholder="First Name" class="text-input-minor" id="sign-up-first-name-text-input" value="<?php if(isset($_POST['suFirstName'])){echo $_POST['suFirstName'];}?>">
        <input type="text" name="suLastName" placeholder="Last Name" class="text-input-minor" id="sign-up-last-name-text-input" value="<?php if(isset($_POST['suLastName'])){echo $_POST['suLastName'];}?>">
        <input type="text" name="suEmail" placeholder="Email" class="text-input-minor" id="sign-up-email-text-input"value="<?php if(isset($_POST['suEmail'])){echo $_POST['suEmail'];}?>">
        <input type="password" name="suPassword" placeholder="Password" class="text-input-minor" id="sign-up-password-text-input">
        <input type="password" name="suConfirmPassword" placeholder="Confirm Password" class="text-input-minor" id="sign-up-confirm-password-text-input">
        <input type="text" name="suDisplayName" placeholder="Display Name (you can change this later)" class="text-input-minor" id="sign-up-display-name-text-input" value="<?php if(isset($_POST['suDisplayName'])){echo $_POST['suDisplayName'];}?>">
        <label><input type="checkbox" name="suRememberMe" value="yes" id="sign-up-remember-me-checkbox"><font id="sign-up-remember-me-text">Remember me</font></label>
        <input name="signUp" type="submit" value="Sign Up" id="sign-up-submit">
    </form>
    <font class="text-minor" id="agree-tos-pp-text">By signing up, you agree to our <a href="#">terms of service</a> and <br><a href="#">privacy policy</a>.</font>
</div>

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>    
<script type='text/javascript'>
    $(document).ready(function(){
        <?php if(isset($_POST['signUp']) && count($errors)>0){ ?>
            $('#home-sign-up-box').show();
        <?php }elseif(isset($_POST['signUp']) && count($errors)==0){ ?>
            //$('#home-sign-up-box').hide();
        <?php }else{?>
            //$('#home-sign-up-box').show();
        <?php }?>

        $("#showSignup").click(function(){
            $('#home-sign-up-box').toggle();
            visible_check();
        });
        visible_check();
    });
    function visible_check(){
        var isVisible = $( "#home-sign-up-box" ).is( ":visible" );
        if(isVisible){
            $("#showSignup").html("Hide Sign-up");
        }else{
            $("#showSignup").html("Show Sign-up");
        }
    }
</script>