重定向到index.php注册表单后关闭

问题描述 投票:0回答:1

当我单击注册按钮并留下空白字段时,它应该显示一条错误消息,提示需要用户名或电子邮件。实际上,当我单击“注册”时,页面重定向到index.php,我必须单击按钮才能查看表单,然后我可以看到该表单上的错误。我不想要这个。如果用户在留下任何空白字段后单击注册并显示错误消息,我想留在注册页面上。

这是html代码

<form action="<?= ROOT_URL ?>signup-logic.php" method="POST">
                <div class="popup-form" id="my-form">
                    <div class="form-box">
                        <i id="my-close-btn" class="uil uil-multiply"></i>
                        <div class="button-box">
                            <div id="btn"></div>
                            <button id="log-btn" class="toggle-btn" type="button">Log In</button>
                            <button id="reg-btn" class="toggle-btn" type="button">Register</button>


                        </div>
                        <div class="social-icons">
                            <a href="#"><i class="fa-brands fa-twitter"></i></a>
                            <a href="#"><i class="fa-brands fa-facebook"></i></a>
                            <a href="#"><i class="fa-brands fa-google"></i></a>
                        </div>
                        <div id="login" class="form-group">
                            <input type="text" class="input-field" placeholder="Username">
                            <input type="text" class="input-field" placeholder="Password">
                            <input type="checkbox" id="rem-chk" class="check-box"><span class="rem">Remember Me</span>
                            <button type="submit" class="submit-btn">Log In</button>
                            <p id="r_msg">Registration Successful. Please log In</p>
                        </div>
                        <div id="register" class="form-group">
                            <?php if (isset($_SESSION['signup'])) : ?>
                                <div class="err_msg">
                                    <p id="g_msg">
                                        <?=
                                        $_SESSION['signup'];
                                        unset($_SESSION['signup']);
                                        ?>
                                    </p>
                                </div>
                            <?php endif ?>
                            <input type="text" name="email" value="<?= $email ?>" class="input-field" placeholder="Email">
                            <input type="text" name="username" value="<?= $username ?>" class="input-field" placeholder="Username">
                            <input type="text" name="createpassword" value="<?= $createpassword ?>" class="input-field" placeholder="Password">
                            <input type="text" name="confirmpassword" value="<?= $confirmpassword ?>" class="input-field" placeholder="Confirm Password">
                            <div class="type-chk">
                                <input type="checkbox" class="check-box">
                                <span class="i-agree">I agree to terms & conditions</span>
                            </div>
                            <button type="submit" name="submit" class="submit-btn">Register</button>
                        </div>
                    </div>
                </div>

                <!-- <a href="" class="pro-btn" id="my-form-btn">Visit Us To Promote Your Website</a> -->
                <button class="pro-btn" type="button" id="my-form-btn">Click To Promote Your Website</button>
            </form>

这是php脚本文件

require 'config/database.php';

if(isset($_POST['submit'])) {
    $email = filter_var($_POST['email'], FILTER_VALIDATE_EMAIL);
    $username = filter_var($_POST['username'], FILTER_SANITIZE_FULL_SPECIAL_CHARS);
    $createpassword = filter_var($_POST['createpassword'], FILTER_SANITIZE_FULL_SPECIAL_CHARS);
    $confirmpassword = filter_var($_POST['confirmpassword'], FILTER_SANITIZE_FULL_SPECIAL_CHARS);
    // echo $email;
    
    if(!$email) {
        $_SESSION['signup'] = 'Please enter a valid email';
    } else if (!$username) {
        $_SESSION['signup'] = 'Please enter a username';
    } else if (strlen($createpassword) < 8 || strlen($confirmpassword) < 8) {
        $_SESSION['signup'] = 'Password should be 8+ character';
    } else {

        if($createpassword !== $confirmpassword) {
            $_SESSION['signup'] = 'Password do not match';
        } else {
            $hashed = password_hash($createpassword, PASSWORD_DEFAULT);

            $user_chk_query = "SELECT * FROM users WHERE username = '$username' OR email = '$email'";
            $user_chk_result = mysqli_query($conn, $user_chk_query);
            if(mysqli_num_rows($user_chk_result) > 0) {
                $_SESSION['signup'] = "username or email already exists";
                echo "username or email already exists";
            }
        }
    }

    if(isset($_SESSION['signup'])) {
        //pass form data back to page
        $_SESSION['signup-data'] = $_POST;
        header('location: '. ROOT_URL . 'index.php');
        die();
    } else {
        //otherwise insert user into database
        $insert_query = "INSERT INTO users SET email = '$email', username = '$username', password = '$hashed'";
        $insert_user = mysqli_query($conn,$insert_query);

        if(!mysqli_error($conn)) {
            //redirect to login page
            $_SESSION['signup-success'] = 'Registration successful. Please log in';
            header('location: '. ROOT_URL . 'index.php');
           die();
        }
    }
} else {
    header('location: '. ROOT_URL . 'index.php');
    die();
}```

php
1个回答
0
投票

你可以在html“必填”中这样写:

<input type="text" class="input-field" placeholder="Username" required />
© www.soinside.com 2019 - 2024. All rights reserved.