登录并注册PHP表单,一个提交一个未提交

登录并注册PHP表单,一个提交一个未提交,php,html,forms,login,Php,Html,Forms,Login,我有两个PHP表单,都带有不同值的提交按钮。register-one工作正常,可以正确地查询数据库,当有人输入错误时会出现错误。然而,登录一个不工作,我似乎无法找出原因。我设置的捕获似乎不适用于登录,但它看起来与注册的捕获相同 PHP if语句: if ($_POST['submit'] == 'Login') { // Checking whether the login form has been submitted $err = array(); echo "hey

我有两个PHP表单,都带有不同值的提交按钮。register-one工作正常,可以正确地查询数据库,当有人输入错误时会出现错误。然而,登录一个不工作,我似乎无法找出原因。我设置的捕获似乎不适用于登录,但它看起来与注册的捕获相同

PHP if语句:

if ($_POST['submit'] == 'Login') {
    // Checking whether the login form has been submitted
    $err = array();
    echo "hey";

    array_push($err, "Hello");
    /*
    if (!count($err)) {
        $_POST['username'] = mysql_real_escape_string($_POST['username']);
        $_POST['password'] = mysql_real_escape_string($_POST['password']);
        $_POST['rememberMe'] = (int)$_POST['rememberMe'];
        // Escaping all input data

        $row = mysql_fetch_assoc(mysql_query("SELECT id,usr,pass FROM tz_login WHERE usr='{$_POST['username']}'"));
        echo $row;
        $pass = $row['pass'];

        if (password_verify($_POST['password'], $pass)) {
            // If everything is okay

            $_SESSION['usr'] = $row['usr'];
            $_SESSION['id'] = $row['id'];
            $_SESSION['rememberMe'] = $_POST['rememberMe'];
            // Store some data in the session

            setCookie('remember', $_POST['rememberMe']);
        }
        else $err[] = 'Wrong username and/or password!';
    }
    */
    if (count($err)) {
        $_SESSION['msg']['login-err'] = implode('<br />'.$err);
    }

    header("Location: index.php");
    exit;
}

else if ($_POST['submit'] == 'Register') {
    // Checking whether the register form has been submitted

    $err = array();

    $username_len = strlen($_POST['username']);
    if ($username_len < 4 || $username_len > 32) {
        array_push($err, 'Your username must be between 3 and 32 characters!');
    }
    if (preg_match('/[^a-z0-9\-\_\.]+/i', $_POST['username'])) {
        array_push($err, 'Your username contains invalid characters!');
    }
    if (!checkPassword($_POST['password'])) {
        array_push($err, 'Your password must be at least 8 characters, contain one letter, number, and special character!');
    }
    if (!passwordMatch($_POST['password'], $_POST['password_repeat'])) {
        array_push($err, 'Your passwords do not match!');
    }
    if (!checkEmail($_POST['email'])) {
        array_push($err, 'Your email is not valid!');
    }

    if (!count($err)) {
        // If there are no errors
        $username = mysql_real_escape_string($_POST['username']);
        $pass = mysql_real_escape_string($_POST['password']);
        $pass = password_hash($pass, PASSWORD_DEFAULT);
        $email = mysql_real_escape_string($_POST['email']);
        // Escape the input data

        mysql_query("INSERT INTO tz_login(usr,pass,email,regIP,dt)
                VALUES(
                    '".$username."',
                    '".$pass."',
                    '".$email."',
                    '".$_SERVER['REMOTE_ADDR']."',
                    NOW()
                )");
        if (mysql_affected_rows($link) == 1) {
            $_SESSION['msg']['reg-success'] = 'Successfully registered! You can now log in!';
        }
        else $err[] = 'This username has already been taken!';
    }
    if (count($err)) {
        $_SESSION['msg']['reg-err'] = implode('<br />', $err);
    }

    header("Location: index.php");
    exit;
}
HTML表格:

<!-- Login form -->
<div class="left">
    <h1>Login</h1>
    <form action="" method="post">
        <?php
            if($_SESSION['msg']['login-err']) {
                echo '<div class="err">'.$_SESSION['msg']['login-err'].'</div>';
                unset($_SESSION['msg']['login-err']);
            }
        ?>
        <label class="form_label" for="username">Username:</label>
        <input class="form_field" type="text" name="username" id="username" value="" size="23" />
        <label class="form_label" for="password">Password:</label>
        <input class="form_field" type="text" name="password" id="password" value="" size="23" />
        <label><input name="rememberMe" id="rememberMe" type="checkbox" checked="checked" value="1" /> &nbsp;Remember me</label>
        <input type="submit" name="submit" value="Login" class="bt_login" />
        <div class="clear"></div>
    </form>
</div>

<!-- Register form -->
<div class="left">
    <h1>Register</h1>
    <form action="" method="post">
        <?php
            if($_SESSION['msg']['reg-err']) {
                echo '<div class="err">'.$_SESSION['msg']['reg-err'].'</div>';
                unset($_SESSION['msg']['reg-err']);
            }
            if($_SESSION['msg']['reg-success']) {
                echo '<div class="success">'.$_SESSION['msg']['reg-success'].'</div>';
                unset($_SESSION['msg']['reg-success']);
            }
        ?>

        <label class="form_label" for="username">Username:</label>
        <input class="form_field" type="text" name="username" id="username" value="" size="23" />
        <label class="form_label" for="password">Password:</label>
        <input class="form_field" type="text" name="password" id="password" value="" size="23" />
        <label class="form_label" for="password_repeat">Repeat Password:</label>
        <input class="form_field" type="text" name="password_repeat" id="password_repeat" value="" size="23" />
        <label class="form_label" for="email">Email:</label>
        <input class="form_field" type="text" name="email" id="email" value="" size="23" />
        <input type="submit" name="submit" value="Register" class="bt_login" />
        <div class="clear"></div>
    </form>
</div>

每次提交登录名时,都将元素放入数组$err中。array_push$err,您好;当您检查错误时,总是会出现错误,并且当您检查数组是否有元素或是否最好使用空时,代码会转到错误iff。用count检查是不好的,因为数组可以有100或200个元素,count将检查每个元素。Register可以很好地处理您刚才所说的所有内容。当我点击submit按钮登录时,if处理程序中的echo语句用于post submit thing,echo是怎么回事?它输出什么吗?如果是这样,您知道您的代码被注释掉了吗?请不要使用mysql_*方法,因为它们在PHP的更高版本中已被弃用和删除。相反,使用或准备好的语句。