登录表单:user的值始终等于0而不是键入的字符串

Din*_*ius 0 html php

我有一个包含两个字段的登录表单:用户名和密码.由于某种原因,值user始终等于0,而值pass正确传递.我可以使用echo看到它:<h1>User:<?php echo $user ?>Pass:<?php echo $pass ?></h1>

我正在修改代码,但无法理解为什么会发生这种情况.为什么user没有正确捕获?

<?php
    @session_start();
    $error = 0;
    if (isset($_POST["user"]) && isset($_POST["pass"])) {

        include_once 'include/User.php';

        $user = $_POST['user'];
        $pass = $_POST['pass'];

        $error = 0;

        $user = User::checkLogin($user, $pass);

        if(!is_object($user) && $user == 0){
            $error = 1;
            if(session_status() === PHP_SESSION_ACTIVE) {
                session_unset();
                session_destroy();
            }
        }

        if($error == 0){
            $_SESSION['loged'] = 1;
            $login = TRUE;
            $_SESSION['userid'] = $user->id;
            $_SESSION['username'] = $user->name." ".$user->surename;
            header("Location: index.php?pagina=1");
        }
        else{
            $error = 1;
            if(session_status() === PHP_SESSION_ACTIVE) {
                session_unset();
                session_destroy();
            }
        }
    }
?>
<div class="form_login">

    <form action="index.php?pagina=0" method="POST">
        <div class="form_login_line">
            <div class="form_login_txt">
                Username:
            </div>
            <div class="form_login_input">
                <input type="text" name="user" id="user" size="10" value="user"/>
            </div>
        </div>
        <div class="form_login_line">
            <div class="form_login_txt">
                Password:
            </div>
            <div class="form_login_input">
                <input type="password" name="pass" id="pass" size="10" value="pass"/>
            </div>
        </div>
        <div class="form_login_line">
            <div class="form_login_submit">
                <input id="input_login_error" type="button" value="Login" onclick="submitForm()"/>
            </div>
        </div>
    </form>

    <div id="login_error">The username or password are incorrect or don't have access permissions.<h1>User:<?php echo $user ?>Pass:<?php echo $pass ?></h1></div>

</div>
<?php if($error == 1): ?>
    <script>$("#login_error").show();</script>
<?php endif;?>
<script>
    page_name("Login");

    function submitForm(){
        //$("#pass").val(sha1($("#pass").val()));
        $('form').prepend('<input type="submit" id="submit5548" style="display: none"/>');
        $("#submit5548").click();
    }
</script>
Run Code Online (Sandbox Code Playgroud)

Jan*_*nno 6

这是因为你用User :: checkLogin覆盖了$ user.

$user = $_POST['user'];
$pass = $_POST['pass'];
$error = 0;
$user = User::checkLogin($user, $pass);
Run Code Online (Sandbox Code Playgroud)

我的建议是使用IDE,他们会通知你这些东西.例如,我使用Netbeans进行PHP开发,它总是通知我一个变量的"意外分配",在这里它会对你说的一样.