我有一个包含两个字段的登录表单:用户名和密码.由于某种原因,值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)
这是因为你用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开发,它总是通知我一个变量的"意外分配",在这里它会对你说的一样.