Php 需要弄清楚为什么单击“我的标题”时不';不要用正确的信息重定向
因此,我正在尝试为我的数据库编写一个用户身份验证脚本,单击按钮,我希望匹配mysql数据库中的信息,以便在正确的情况下重定向到另一个页面。但一按按钮,我就什么也没发生。我似乎不明白为什么。无论登录信息是否正确,似乎都没有发生任何事情。此外,我知道密码安全等,这是一个试运行。我知道这有风险。我应该使用准备好的语句,但这只是在实现其余语句之前的一个测试 HTML代码Php 需要弄清楚为什么单击“我的标题”时不';不要用正确的信息重定向,php,html,jquery,ajax,Php,Html,Jquery,Ajax,因此,我正在尝试为我的数据库编写一个用户身份验证脚本,单击按钮,我希望匹配mysql数据库中的信息,以便在正确的情况下重定向到另一个页面。但一按按钮,我就什么也没发生。我似乎不明白为什么。无论登录信息是否正确,似乎都没有发生任何事情。此外,我知道密码安全等,这是一个试运行。我知道这有风险。我应该使用准备好的语句,但这只是在实现其余语句之前的一个测试 HTML代码 <!DOCTYPE html> <html lang="en"> <head>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Local Feedbacks</title>
<link rel="stylesheet"
href="https://cdn.jsdelivr.net/npm/bootstrap@4.5.3/dist/css/bootstrap.min.css" integrity="sha384-TX8t27EcRE3e/ihU7zmQxVncDAy5uIKz4rEkgIXeMed4M0jlfIDPvg6uqKI2xXr2" crossorigin="anonymous">
<link rel="stylesheet"
href="https://cdnjs.cloudflare.com/ajax/libs/normalize/8.0.1/normalize.min.css">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css">
<link rel="stylesheet" href="assets/styles/styles.css">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
</head>
<body>
<script>
$(document).ready(function(){
$('#submit').click(function(event){
event.preventDefault();
var username = $('#username').val();
var pass = $('#password').val();
$.ajax({
url: 'login.php',
method:'POST',
data:
{
username: username,
pass: pass,
}
});
});
});
</script>
<!--Navigation Bar-->
<nav class="navbar navbar-expand-sm navbar-dark bg-dark sticky-top">
<h1 class="navbar-brand">Local Bands</h1>
<button class="navbar-toggler" data-toggle="collapse" data-target="#navcollapse">
<span class="navbar-toggler-icon"></span>
</button>
<!--Navigation Bar Options-->
<div class="collapse navbar-collapse" id="navcollapse">
<u1 class="navbar-nav mr-auto">
<li class="nav-item">
<a class="nav-link" href="./index.html">Home</a>
</li>
<li class="nav-item">
<a class="nav-link" href="./assets/html/bands.html">Bands</a>
</li>
<li class="nav-item">
<a class="nav-link" href="./assets/html/contact.html">Contact Us</a>
</li>
<li class="nav-item">
<a class="nav-link" href="./assets/html/about.html">About</a>
</li>
</u1>
<!--Search Button-->
<form class="form-inline my-2 my-lg-0">
<input class="form-control mr-sm-2" type="search" placeholder="Search" aria-label="Search">
<button class="btn btn-outline-success my-2 my-sm-0" type="submit">Search</button>
</form>
<!--Login section-->
<u2 class="navbar-nav">
<li class="nav-item">
<a class="nav-link" href="./assets/html/login.html">Login</a>
</li>
</u2>
</div>
</nav>
<!--Title of the page-->
<header class="main-header text-center text-black">
<h1 class="login-text">Please Login</h1>
</header>
<main class="container">
<div class="row">
<!-- Form -->
<form class="col-md-7" method="POST">
<!-- Name -->
<label for="name" class="mb-0 mt-1">Name</label>
<input type="text" id="username" placeholder="Username" class="form-control" method="POST">
<!-- Email -->
<label for="password" class="mb-0 mt-1" method="POST">Password</label>
<input type="text" id="password" placeholder="Password" class="form-control">
<!-- Submit -->
<input class="mt-1" type="submit" value="Log in" id="submit" target="_blank"> </input>
</form>
</div>
</main>
</body>
</html>
<?php
ob_start();
session_start();
$message="";
$dbname = 'project info';
$dbuser = 'root';
$dbpass = '';
$dbhost = 'localhost';
if(isset($_POST['username'])){
$username = $_POST['username'];
}
if(isset($_POST['pass'])){
$password = $_POST['pass'];
}
$conn= mysqli_connect($dbhost, $dbuser, $dbpass, $dbname);
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
if(count($_POST)>0) {
$result = mysqli_query($conn,"SELECT Username, pass FROM registration WHERE Username = '" . $_POST['username'] ."' AND pass = '" . $_POST['pass'] ."'");
$count = mysqli_num_rows($result);
if($count==0) {
$_SESSION['user'] = $_POST['username'];
header("Location: http://localhost/index.html");
}
else{
echo "Wrong info";
}
}
$conn->close();
ob_end_flush();
?>
局部反馈
$(文档).ready(函数(){
$(“#提交”)。单击(函数(事件){
event.preventDefault();
var username=$('#username').val();
var pass=$('#password').val();
$.ajax({
url:'login.php',
方法:'POST',
数据:
{
用户名:用户名,
通过:通过,,
}
});
});
});
本地乐队
搜寻
请登录
名称
密码
PHP代码
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Local Feedbacks</title>
<link rel="stylesheet"
href="https://cdn.jsdelivr.net/npm/bootstrap@4.5.3/dist/css/bootstrap.min.css" integrity="sha384-TX8t27EcRE3e/ihU7zmQxVncDAy5uIKz4rEkgIXeMed4M0jlfIDPvg6uqKI2xXr2" crossorigin="anonymous">
<link rel="stylesheet"
href="https://cdnjs.cloudflare.com/ajax/libs/normalize/8.0.1/normalize.min.css">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css">
<link rel="stylesheet" href="assets/styles/styles.css">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
</head>
<body>
<script>
$(document).ready(function(){
$('#submit').click(function(event){
event.preventDefault();
var username = $('#username').val();
var pass = $('#password').val();
$.ajax({
url: 'login.php',
method:'POST',
data:
{
username: username,
pass: pass,
}
});
});
});
</script>
<!--Navigation Bar-->
<nav class="navbar navbar-expand-sm navbar-dark bg-dark sticky-top">
<h1 class="navbar-brand">Local Bands</h1>
<button class="navbar-toggler" data-toggle="collapse" data-target="#navcollapse">
<span class="navbar-toggler-icon"></span>
</button>
<!--Navigation Bar Options-->
<div class="collapse navbar-collapse" id="navcollapse">
<u1 class="navbar-nav mr-auto">
<li class="nav-item">
<a class="nav-link" href="./index.html">Home</a>
</li>
<li class="nav-item">
<a class="nav-link" href="./assets/html/bands.html">Bands</a>
</li>
<li class="nav-item">
<a class="nav-link" href="./assets/html/contact.html">Contact Us</a>
</li>
<li class="nav-item">
<a class="nav-link" href="./assets/html/about.html">About</a>
</li>
</u1>
<!--Search Button-->
<form class="form-inline my-2 my-lg-0">
<input class="form-control mr-sm-2" type="search" placeholder="Search" aria-label="Search">
<button class="btn btn-outline-success my-2 my-sm-0" type="submit">Search</button>
</form>
<!--Login section-->
<u2 class="navbar-nav">
<li class="nav-item">
<a class="nav-link" href="./assets/html/login.html">Login</a>
</li>
</u2>
</div>
</nav>
<!--Title of the page-->
<header class="main-header text-center text-black">
<h1 class="login-text">Please Login</h1>
</header>
<main class="container">
<div class="row">
<!-- Form -->
<form class="col-md-7" method="POST">
<!-- Name -->
<label for="name" class="mb-0 mt-1">Name</label>
<input type="text" id="username" placeholder="Username" class="form-control" method="POST">
<!-- Email -->
<label for="password" class="mb-0 mt-1" method="POST">Password</label>
<input type="text" id="password" placeholder="Password" class="form-control">
<!-- Submit -->
<input class="mt-1" type="submit" value="Log in" id="submit" target="_blank"> </input>
</form>
</div>
</main>
</body>
</html>
<?php
ob_start();
session_start();
$message="";
$dbname = 'project info';
$dbuser = 'root';
$dbpass = '';
$dbhost = 'localhost';
if(isset($_POST['username'])){
$username = $_POST['username'];
}
if(isset($_POST['pass'])){
$password = $_POST['pass'];
}
$conn= mysqli_connect($dbhost, $dbuser, $dbpass, $dbname);
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
if(count($_POST)>0) {
$result = mysqli_query($conn,"SELECT Username, pass FROM registration WHERE Username = '" . $_POST['username'] ."' AND pass = '" . $_POST['pass'] ."'");
$count = mysqli_num_rows($result);
if($count==0) {
$_SESSION['user'] = $_POST['username'];
header("Location: http://localhost/index.html");
}
else{
echo "Wrong info";
}
}
$conn->close();
ob_end_flush();
?>
对我来说很好
你看过devtool吗?键入F12,您将在“网络”选项卡中看到,请求已发送到“login.php”您应该在jquery中使用submit()而不是单击
注意:您有许多语法是不正确的
在ajax脚本上
$("#loginForm").submit(function(e) {
e.preventDefault() // avoid to execute the actual submit of the form.
const form = $(this)
const url = form.attr('action')
const method form.attr('method')
$.ajax({
type: method,
url: url,
data: form.serialize(),
success: function(response) {
if(response.status) {
location.href = '/index.html'
}
}
})
})
然后在表单html上
<form id="loginForm" class="col-md-7" method="POST" action="login.php">
<!-- Name -->
<label for="name" class="mb-0 mt-1">Name</label>
<input type="text" id="username" name="username" placeholder="Username" class="form-control">
<!-- Email -->
<label for="password" class="mb-0 mt-1">Password</label>
<input type="password" id="password" name="password" placeholder="Password" class="form-control">
<!-- Submit -->
<input class="mt-1" type="submit" value="Log in" id="submit">
</form>
名称
密码
然后在login.php中
<?php
session_start();
$message="";
$dbname = 'project info';
$dbuser = 'root';
$dbpass = '';
$dbhost = 'localhost';
if(isset($_POST['username']) && isset($_POST['password']) ){
$username = $_POST['username'];
$password = $_POST['password'];
} else {
die("Form is not defined");
}
$conn= mysqli_connect($dbhost, $dbuser, $dbpass, $dbname);
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
$username = mysqli_real_escape_string($conn, $_POST['username']);
$password = mysqli_real_escape_string($conn, $_POST['password']);
$result = mysqli_query($conn,"SELECT username FROM registration WHERE username = '" . $username ."' AND pass = '" . $password ."'");
$count = mysqli_num_rows($result);
$status = false;
if($count > 0 ) {
$_SESSION['user'] = $username;
$status = true;
}
echo json_encode(['status' => $status]);
$conn->close();
?>
您的ajax代码没有成功、错误或完成回调。为了查看php脚本的输出,您需要添加这些内容。基本上就是这样,但我的问题是当if语句执行时,它不会链接到index.html,而是如果它为true,它会回显为true,如果为false,它会回显为false。我编辑了它,所以如果它为false,它将发布一个警告响应,指出密码是错误的,如果它为true,它将转到URL,但它只是继续转到URL,即使它为false。在尝试了一些事情之后。ajax中的if语句是导致出错的原因。如果我添加else语句,它将始终执行If或else,具体取决于状态。基本上,$count==0是错误的,您必须使用$count>0,因为$count==0意味着找不到任何用户,那么它将回显FALSE,也就是为什么要比较$\u POST>0?你已经检查了上面的$\u帖子,不需要检查代码是否冗余。好吧,我已经把它解决了。我用的是你发的密码别担心。问题是response.status返回时未定义。所以我做了一个JSON.parse()以便从中获取数据,然后我做了if语句。谢谢你的帮助!