0

我正在测试 php 中的新东西,但是我的 php 代码有什么问题很难。所以基本上当我只用字符输入普通注册登录时,我的 php 会抛出代码中第 18 行的 msg“signup=invalid”。请帮忙。

<?php

if (isset($_POST['submit'])) {

    include_once 'dbc.php';

    $login = mysqli_real_escape_string($conn, $_POST['login']);
    $pwd   = mysqli_real_escape_string($conn, $_POST['pwd']);

    //Error handler
    //Check for empty fields
    if (empty($login) || empty($pwd)) {
        header("Location: register.php?signup=empty");
        exit();
    } else {
        //Check if input characters are valid
        if (preg_match("/^[a-zA-Z]*$/", $first)) {
            header("Location: register.php?signup=invalid");
            exit();
        } else {
            $sql         = "SELECT * FROM user WHERE name='$login'";
            $result      = mysqli_query($conn, $sql);
            $resultCheck = mysqli_num_rows($result);

            if ($resultCheck > 0) {
                header("Location: register.php?signup=nametaken");
                exit();
            } else {
                //hash
                $hashedPwd = password_hash($pwd, PASSWORD_DEFAULT);
                //Insert user into database
                $sql       = "INSERT INTO user (user_login, user_pwd) VALUES ('$login', '$hashedPwd');";

                mysqli_query($conn, $sql);
                header("Location: register.php?signup=success");
                exit();

            }
        }
    }

} else {
    header("Location: register.php");
    exit();
}
4

1 回答 1

0

这条线

if (preg_match("/^[a-zA-Z]*$/", $first)) {

应该

if (!preg_match("/^[a-zA-Z]*$/", $login)) {

由于 $first 没有被声明,它总是正确的,因为它只包含数字!意味着如果它不等于

于 2017-06-22T08:28:22.273 回答