我正在为学校做一个项目,我在登录时遇到了一些问题,我知道如何以不同的方式进行,但我想学习如何以这种方式进行。
我真的不知道为什么它不起作用(某些部分可能没有任何逻辑,这就是它不起作用的原因),它总是从警报中显示错误消息“凭据无效”。
这是我的代码:
<html>
<head>
<meta charset="utf-8">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script type="text/javascript">
$(document).ready(function() {
$('#loginform').submit(function(e) {
e.preventDefault();
$.ajax({
type: "POST",
url: 'loginFinal.php',
data: $(this).serialize(),
success: function(data) {
if (data === 'CORRECTO') {
window.location = 'index.php';
}
else {
alert('Invalid credentials');
}
}
});
});
});
</script>
</head>
<body>
<form id="loginform" method="post">
Username: <input type="text" name="username" id="username" value="">
Password: <input type="password" name="password" id="password" value="">
<input type="submit" name="loginsub" id="loginsub" value="Login">
</form>
</body>
</html>
这是PHP:
function Login() {
$success = false;
try {
$con = new PDO( 'mysql:host=localhost;dbname=MY_DB_NAME', 'MY_USRNAME', 'MY_PSW' );
$sql = "SELECT * FROM users WHERE username = ".$_POST['username']." AND password = ".$_POST['password']." LIMIT 1";
$stmt = $con->prepare( $sql );
$stmt->execute();
$valid = $stmt->fetchColumn();
if( $valid ) {
$success = true;
session_start();
session_regenerate_id();
$_SESSION['user'] = $_POST['username'];
session_write_close();
echo ('CORRECTO');
exit();
}
$con = null;
return $success;
}
catch (PDOException $e) {
echo $e->getMessage();
return $success;
}
}
使下面的代码使用准备好的语句。你的ajax看起来不错。只是下面的功能不是。
更新代码:
function Login() {
$success = false;
try {
$con = new PDO( 'mysql:host=localhost;dbname=MY_DB_NAME', 'MY_USRNAME', 'MY_PSW' );
$sql = "SELECT * FROM users WHERE username = :username AND password = :password LIMIT 1";
$stmt = $con->prepare( $sql );
$stmt->execute(array(':username'=>$_POST['username'], ':password'=>$_POST['password']));
$valid = $stmt->fetchColumn();
if( $valid ) {
$success = true;
session_start();
session_regenerate_id();
$_SESSION['user'] = $_POST['username'];
session_write_close();
echo ('CORRECTO');
exit();
}
$con = null;
return $success;
}
catch (PDOException $e) {
echo $e->getMessage();
return $success;
}
}
Login();
^ 并且必须执行该函数才能发送响应。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句