问题是我的注册和登录服务器端验证不起作用。客户端验证仍然可以检查字段是否按我希望的方式填写。
“提交”按钮也用于工作,但不再工作。而是单击它,服务器端验证出现错误,导致它无法提交。
这是我的登录表单:
<div id="content">
<form id="login-form" name="login-form" class="content-padding" method="post" autocomplete="off" action="index.php">
<div class="login-container">
<div>
<label for="l_username">Username</label>
<input type="text" placeholder="Enter Username" name="l_username" id="l_username">
</div>
<div>
<label for="l_password">Password</label>
<input type="password" placeholder="Enter Password" name="l_password" id="l_password">
</div>
<button id="l_submit" name="l_submit" type="submit">Login</button>
</div>
<div class="cancel-container">
<button type="reset" class="clear-btn">Clear</button>
<button type="button" class="register-btn" onclick="location.href='register.php'">Register</button>
</div>
</form>
</div>
这是我的登录表:
$().ready(function() {
$("#login-form").validate({
rules: {
l_username: {
required: true,
},
l_password: {
required: true,
}
},
messages: {
l_username: {
required: "Please Enter a Username"
},
l_password: {
required: "Please Enter a Password"
}
},
submitHandler: function(form){
$.ajax({
url: 'includes/login.php',
type: 'post',
data: $('#login-form').serialize(),
success: function(response){
if(response=="ok"){
$("#l_submit").html('<img src="images/ajax-loader.gif" /> Signing In ...');
setTimeout('window.location.href = "index.php";', 3000);
} else {
$("#loginError").fadeIn(1000, function(){
$("#loginError").html('<div class="alert alert-danger"><i class="fas fa-info-circle"></i> '+response+' !</div>');
$("#l_submit").html('<i class="fas fa-sign-in-alt"></i> Login');
});
}
}
});
return false;
}
});
});
这是我的登录表单:
<?php
include 'dbconfig.php';
$loginUsername = $loginPassword = "";
if ($_SERVER['REQUEST_METHOD'] == "POST"){
$loginUsername = test_input($_POST['l_username']);
$loginPassword = test_input($_POST['l_password']);
}
function test_input($data){
$data = trim($data);
$data = stripslashes($data);
$data = htmlspecialchars($data);
return $data;
}
$loginHashed = hash('sha512', $loginPassword); //CHAR 128 - length field
$stmt = $conn->prepare("SELECT * FROM users WHERE username = ? && password = ?");
$stmt->bind_param("ss", $loginUsername, $loginHashed);
$stmt->execute();
$result = $stmt->get_result();
if($result->num_rows == 1){
$_SESSION['currentuser']=$loginUsername;
echo 'ok';
}else{
echo "Invalid Username and/or Password";
}
$stmt->close();
$conn->close();
?>
它和数据库连接得很好,我可以从 dbconfig.php
文件。我不确定哪里出了问题。我唯一看到的错误是:
php致命错误:未捕获错误:调用未定义的方法mysqli\u stmt::get\u result()
然而,我不知道为什么会发生这种情况,因为我似乎无法让它在我的web服务器和最新版本的 MAMP
.
我在我的网络服务器上尝试了我朋友的网站代码和我老师的工作网站代码/ MAMP
两者似乎都有一个相同的问题,即当您在登录和注册窗体上单击submit按钮时,它不会执行任何操作,也不会用新用户更新数据库。
暂无答案!
目前还没有任何答案,快来回答吧!