重复检查密码时,PHP注册表格无法正常工作



当我尝试测试我的注册错误时,所有这些都可以使用密码/密码重复,就像我尝试将其提交到数据库中一样,该页面给了我错误

注意:未定义的变量:STMT c: xampp htdocs nocess incress insigup.inc.inc.php在第85行

警告:mysqli_stmt_close()期望参数1为mysqli_stmt, c: xampp htdocs nocess incress incress incibup.inc.php中给出的null 85

我的注册PHP页面代码

<?php
    require "PresenceNavbar.php"
?>
<link href="css/SignUp.css" rel="stylesheet" type="text/css">
<body scroll="no" style="overflow: hidden">
    <main>
        <div>
            <section class ="SignupSheet">
                <img src="assets/Keyhole.png" width="130" class="avatar">
            <h1>Sign Up</h1>
                <?php
                    if (isset($_GET['error']))
                    {
                        if ($_GET['error'] == "emptyfields")
                        {
                            echo '<p class = "SS" id="SS">Fill in all fields!</p>';
                        }
                        else if ($_GET['error'] == "invaliduidmail")
                        {
                            echo '<p class = "SS" id="SS">Invalid username and e-mail!</p>';
                        }
                        else if ($_GET['error'] == "invaliduid")
                        {
                            echo '<p class = "SS" id="SS">Invalid username!</p>';
                        }
                        else if ($_GET['error'] == "invalidmail")
                        {
                            echo '<p class = "SS" id="SS">Invalid e-mail!</p>';
                        }
                        else if ($_GET['error'] == "passwordcheck")
                        {
                            echo '<p class = "SS" id="SS">Your passwords do not match!</p>';
                        }
                        else if ($_GET['error'] == "usertaken")
                        {
                            echo '<p class = "SS" id="SS">Username is already taken!</p>';
                        }
                    }
                ?>

            <form class="Ssheet" action="includes/signup.inc.php" method="post">
                <p>Username</p>
                <input type="text" name="uid" placeholder="Username">
                <p>E-mail</p>
                <input type="text" name="mail" placeholder="E-mail">
                <p>Password</p>
                <input type="password" name="pwd" placeholder="Password">
                <p>Repeat Password</p>
                <input type="password" name="pwd-repeat" placeholder="Repeat Password">
                <input type="submit" name="signup-submit" id="signup-submit" value="Sign Up">
            </form>
            </section>
        </div>
    </main>
</body>

我的Ingip.inc.php文件

<?php
if (isset($_POST['signup-submit']))
{
    require 'dbh.inc.php';

    $username = $_POST['uid'];
    $email = $_POST['mail'];
    $password = $_POST['pwd'];
    $passwordRepeat = $_POST['pwd-repeat'];
    if (empty($username) || empty($email) || empty($password) || empty($passwordRepeat))
    {
        header("Location: ../PresenceSignup.php?error=emptyfields&uid=".$username."&mail=".$email);
        exit();
    }
    else if (!filter_var($email, FILTER_VALIDATE_EMAIL) && !preg_match("/^[a-zA-Z0-9]*$/", $username))
    {
        header("Location: ../PresenceSignup.php?error=invalidmailuid");
    }
    else if (!filter_var($email, FILTER_VALIDATE_EMAIL))
    {
        header("Location: ../PresenceSignup.php?error=invalidmail&uid=".$username);
        exit();
    }
    else if (!preg_match("/^[a-zA-Z0-9]*$/", $username))
    {
        header("Location: ../PresenceSignup.php?error=invaliduid&mail=".$email);
        exit();
    }
    else if ($password !== $passwordRepeat)
    {
        ("Location: ../PresenceSignup.php?error=passwordcheck&uid=".$username."&mail=".$email);
    }
    else
    {
        $sql = "SELECT uidUsers FROM users WHERE uidUsers=?";
        $stmt = mysqli_stmt_init($conn);
        if (!mysqli_stmt_prepare($stmt, $sql))
        {
            header("Location: ../PresenceSignup.php?error=sqlerror");
            exit();
        }
        else
        {
            mysqli_stmt_bind_param($stmt, "s", $username);
            mysqli_stmt_execute($stmt);
            mysqli_stmt_store_result($stmt);
            $resultCheck = mysqli_stmt_num_rows($stmt);
            if ($resultCheck > 0 ) 
            {
                header("Location: ../PresenceSignup.php?error=usertaken&mail=".$email);
                exit();
            }
            else 
                {
                $sql = "INSERT INTO users (uidUsers, emailUsers, pwdUsers) VALUES (?, ?, ?)";
                $stmt = mysqli_stmt_init($conn);
                if (!mysqli_stmt_prepare($stmt, $sql))
                {
                    header("Location: ../PresenceSignup.php?error=sqlerror");
                    exit();
                }
                else 
                {
                    $hashedPwd = password_hash($password, PASSWORD_DEFAULT);    
                    mysqli_stmt_bind_param($stmt, "sss", $username, $email, $hashedPwd);    
                    mysqli_stmt_execute($stmt);
                    header("Location: ../PresenceLogin.php");
                    exit(); 
                }
            }
        }   
    }
    mysqli_stmt_close($stmt);
    mysqli_close($conn);
}
else
{
    header("Location: ../PresenceSignup.php");
    exit();
}

编辑我移动了mysqli_stmt_close($ stmt);和mysqli_close($ conn);到他们的正确位置,但现在它将我重定向到我的login.inc.php文件,带有空白页面,而不是留在同一页面上并给我错误输出

更改代码的这一部分

 else
        {
            $sql = "SELECT uidUsers FROM users WHERE uidUsers=?";
            $stmt = mysqli_stmt_init($conn);
            if (!mysqli_stmt_prepare($stmt, $sql))
            {
                header("Location: ../PresenceSignup.php?error=sqlerror");
                exit();
            }
            else
            {
                mysqli_stmt_bind_param($stmt, "s", $username);
                mysqli_stmt_execute($stmt);
                mysqli_stmt_store_result($stmt);
                $resultCheck = mysqli_stmt_num_rows($stmt);
                if ($resultCheck > 0 ) 
                {
                    header("Location: ../PresenceSignup.php?error=usertaken&mail=".$email);
                    exit();
                }
                else 
                    {
                    $sql = "INSERT INTO users (uidUsers, emailUsers, pwdUsers) VALUES (?, ?, ?)";
                    $stmt = mysqli_stmt_init($conn);
                    if (!mysqli_stmt_prepare($stmt, $sql))
                    {
                        header("Location: ../PresenceSignup.php?error=sqlerror");
                        exit();
                    }
                    else 
                    {
                        $hashedPwd = password_hash($password, PASSWORD_DEFAULT);    
                        mysqli_stmt_bind_param($stmt, "sss", $username, $email, $hashedPwd);    
                        mysqli_stmt_execute($stmt);
                        header("Location: ../PresenceLogin.php");
                        exit(); 
                    }
                }
            }   
        mysqli_stmt_close($stmt);
        mysqli_close($conn);
        }

您的$ SMTP变量声明不在您呼叫的同一范围内,它需要在其他条件

之内

最新更新