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

Php 登录表单:user的值始终等于0,而不是键入的字符串,php,html,Php,Html,我有一个带有两个字段的登录表单:用户和密码。由于某些原因,user的值始终等于0,而pass的值被正确传递。我可以使用echo:User:Pass: 我正在修改代码,但不明白为什么会发生这种情况。为什么未正确捕获用户 <?php @session_start(); $error = 0; if (isset($_POST["user"]) && isset($_POST["pass"])) { include_once 'inclu

我有一个带有两个字段的登录表单:用户和密码。由于某些原因,
user
的值始终等于
0
,而
pass
的值被正确传递。我可以使用echo:
User:Pass:

我正在修改代码,但不明白为什么会发生这种情况。为什么未正确捕获
用户

<?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>

用户名:
密码:
用户名或密码不正确或没有访问权限。用户:密码:
$(“#登录错误”).show();
页面名称(“登录”);
函数submitForm(){
//$(“#通过”).val(sha1($(“#通过”).val());
$('form')。前缀(“”);
$(“#提交5548”)。单击();
}

这是因为您使用user::checkLogin覆盖$user

$user = $_POST['user'];
$pass = $_POST['pass'];
$error = 0;
$user = User::checkLogin($user, $pass);

我的建议是使用IDE,他们会通知你这些东西。例如,我在PHP开发中使用Netbeans,它总是通知我变量的“意外赋值”,在这里它会向您声明相同的情况。

这是因为您使用user::checkLogin覆盖$user

$user = $_POST['user'];
$pass = $_POST['pass'];
$error = 0;
$user = User::checkLogin($user, $pass);

我的建议是使用IDE,他们会通知你这些东西。例如,我使用Netbeans进行PHP开发,它总是通知我变量的“意外赋值”,在这里,它也会向您说明同样的情况。

当您在同一页面上提交表单时,为什么要使用js提交表单?
$user->surename
在我看来像是一个打字错误,应该读作
$user->username
,我可能是错的。为什么你在同一页上提交表单时使用js提交表单?
$user->surename
在我看来像是一个打字错误,应该读作
$user->username
,但我可能是错的。是的,我也在看这个。我只是不确定他们的
$user->surename
;似乎是一个可能的输入错误。是的,可能是一个输入错误,然后他的类可能实际上有这个参数(他似乎不是英语母语,所以他可能有错误)。
surename
的字母也可以拼出
用户名
-它们都包含相同的字母,一旦重新排列;-)我在他们的问题下就那个可能的打字错误发表了评论。可能确实是对的。然后,如果方法/变量不可访问,是否应该弹出错误?编辑:如果您没有设置错误报告(E_ALL),则可能不会。仅当他们正在检查错误时。我只是想确定,就像我说的,理论上人们会认为/写/使用“用户名”这个词来表示“用户名”;-)但正如我在他们问题下留下的评论中所说,我可能错了;我只是想确保他们没有打字错误。有时候我们的手指比我们的大脑工作得快。是的,我也在看这个。我只是不确定他们的
$user->surename
;似乎是一个可能的输入错误。是的,可能是一个输入错误,然后他的类可能实际上有这个参数(他似乎不是英语母语,所以他可能有错误)。
surename
的字母也可以拼出
用户名
-它们都包含相同的字母,一旦重新排列;-)我在他们的问题下就那个可能的打字错误发表了评论。可能确实是对的。然后,如果方法/变量不可访问,是否应该弹出错误?编辑:如果您没有设置错误报告(E_ALL),则可能不会。仅当他们正在检查错误时。我只是想确定,就像我说的,理论上人们会认为/写/使用“用户名”这个词来表示“用户名”;-)但正如我在他们问题下留下的评论中所说,我可能错了;我只是想确保他们没有打字错误。有时我们的手指比我们的大脑工作得快。