Javascript Ajax/PHP登录没有反应
我收到了一个部分构建的网站,并被要求为客户和管理员实现一个登录系统。我对JS和AJAX非常陌生,我很难理解其他人实现了什么,以及如何让它正常工作 这是用户可以在凭证中输入的登录表单Javascript Ajax/PHP登录没有反应,javascript,php,html,ajax,Javascript,Php,Html,Ajax,我收到了一个部分构建的网站,并被要求为客户和管理员实现一个登录系统。我对JS和AJAX非常陌生,我很难理解其他人实现了什么,以及如何让它正常工作 这是用户可以在凭证中输入的登录表单 <form name="ajaxform" id="ajaxform" action="auth/ajax-auth.php" method="POST" > <h4>Client Login</h4> <div id="error"></
<form name="ajaxform" id="ajaxform" action="auth/ajax-auth.php" method="POST" >
<h4>Client Login</h4>
<div id="error"></div>
<label for="username" class="col-sm-2 control-label">Username</label>
<input id="username" class="form-control" name='username' placeholder="Username">
<label for="password" class="col-sm-2 control-label">Password</label>
<input type="password" class="form-control" id="password" name='password' placeholder="Password">
</div>
<div class="modal-footer">
<button type="button">Close</button>
<button type="submit" id="loginbtn">Login</button>
</div>
</form>
这是我的PHP:
session_start();
error_reporting(E_ALL);
ini_set('display_errors', 1);
$username = $_POST['username'];
$password = $_POST['password'];
include '../connection.php';
$dbc = mysqli_connect(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME);
$sql = "SELECT * FROM users WHERE username='$username' AND password='$password'";
$result = mysqli_query($dbc, $sql);
if (mysqli_num_rows($result) == true)
{
$_SESSION["username"] = $username;
$row = mysqli_fetch_array($result);
if ($row["permission"] == 2)
{
$_SESSION["permission"] = 2;
//Redirect to the admin login page.
header("Location: ../admin/admin.php");
}
else if ($row["permission"] == 1)
{
$_SESSION["permission"] = 1;
$_SESSION["userId"] = $row["user_id"];
$_SESSION["account"] = $row["account_id"];
//redirect to the client home page.
header("Location: ../index.html"); //Change this when ready, for now go to homepage
}
}
else
{
echo "User not found!";
header("Location: ../index.html");
}
当我输入用户名和密码(错误或正确)时,什么都没有发生。如果凭据错误,则应显示错误消息,如果我以管理员身份登录,则应重定向到管理员页面,对于重定向到客户端页面的客户端,也是如此
我在这里出了什么问题
控制台没有向我抛出任何错误,甚至没有显示关于无效登录凭据的错误消息
我知道我很接近,非常感谢您的帮助 您必须在PHP中提供一些输出,因为现在您正在重定向请求。这不适用于AJAX请求 例如:
if ($row["permission"] == 2)
{
$_SESSION["permission"] = 2;
// Redirect to the admin login page.
echo 'admin';
}
else if ($row["permission"] == 1)
{
$_SESSION["permission"] = 1;
$_SESSION["userId"] = $row["user_id"];
$_SESSION["account"] = $row["account_id"];
echo 'client';
}
试试这个代码
session_start();
error_reporting(E_ALL);
ini_set('display_errors', 1);
$username = $_POST['username'];
$password = $_POST['password'];
include '../connection.php';
$dbc = mysqli_connect(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME);
$sql = "SELECT * FROM users WHERE username='$username' AND password='$password'";
$result = mysqli_query($dbc, $sql);
if (mysqli_num_rows($result) == true)
{
$_SESSION["username"] = $username;
$row = mysqli_fetch_array($result);
if ($row["permission"] == 2)
{
$_SESSION["permission"] = 2;
//Redirect to the admin login page.
echo "admin"; die;
}
else if ($row["permission"] == 1)
{
$_SESSION["permission"] = 1;
$_SESSION["userId"] = $row["user_id"];
$_SESSION["account"] = $row["account_id"];
//redirect to the client home page.
echo "client"; die; //Change this when ready, for now go to homepage
}
}
else
{
echo "notFound"; die;
}
而脚本就像
$("#ajaxform").submit(function(e)
{
e.preventDefault();
var username=$("#username").val();
var password=$("#password").val();
var dataString = 'username='+username+'&password='+password;
if($.trim(username).length>0 && $.trim(password).length>0) {
$.ajax({
type: "POST",
url: "auth/ajax-auth.php",
data: dataString,
cache: false,
beforeSend: function(){ $("#loginbtn").val('Connecting...');},
success: function(data){
if(data=="admin"||data=="client"||) {
alert(data + " Logged in!");
if(data == "admin"){
window.location.href = "/admin/admin.php";
}
else if(data == "client"){
//uncomment when client_home.php page is ready
//window.location.href = "client_home.php";
//for now just redirect to homepage
window.location.href = "client_home.html";
}
} else {
$("#error").html("<span style='color:#cc0000'>Error:</span> Invalid username and password. ");
$("#loginbtn").val('Submit');
}
}
});
}
$(“#ajaxform”).submit(函数(e)
{
e、 预防默认值();
var username=$(“#username”).val();
var password=$(“#password”).val();
var dataString='username='+username+'&password='+password;
如果($.trim(用户名).length>0&&$.trim(密码).length>0){
$.ajax({
类型:“POST”,
url:“auth/ajax auth.php”,
数据:dataString,
cache:false,
beforeSend:function(){$(“#loginbtn”).val('Connecting…');},
成功:功能(数据){
如果(数据==“管理”| |数据==“客户”| |){
警报(数据+“已登录!”);
如果(数据=“管理”){
window.location.href=“/admin/admin.php”;
}
else if(数据=“客户”){
//当client_home.php页面准备就绪时取消注释
//window.location.href=“client\u home.php”;
//现在只需重定向到主页
window.location.href=“client\u home.html”;
}
}否则{
$(“#error”).html(“错误:无效的用户名和密码。”);
$(“#loginbtn”).val(‘提交’);
}
}
});
}
而不是php中的这一行:
header("Location: ../index.html");
改用这个:
echo $username;
这将把用户名返回到Ajax请求,这样javascript就可以在成功登录时重定向用户。首先,从表单中删除
操作或添加e.preventDefault();
在你的jquery代码中。@Anantkumarsing首先为什么?解释一下为什么我应该这样做,而不是告诉我这样做。既然表单的动作被赋予了,那么它就会直接进入该页面。在你按照我说的去做之前,ajax不会起作用。我只是尝试了这个,我只是从PHP中的其他人那里找不到,我知道用户不会这样做数据库中存在。我尝试了“客户端”用户和“管理员”用户。@BigRabbit将数据类型:html添加到Ajax这是回显“管理员”和“客户端”正确地依赖于我以谁的身份登录,我的表单也在响应,这很好,但是我如何让它重定向它们而不是仅仅回显?Woops我调整了我的AJAX并忘记更改它,当我登录并重定向到正确的页面时。重定向是在jQuery代码中完成的。在PHP中不需要这样做。是的,在我的问题中,我忘记了将一些内容改回原来的状态,这很有效,谢谢!您能否准确地告诉我我做错了什么-仍然有点困惑。jQuery代码期待响应。但是PHP代码正在重定向到另一个页面,而不是回显值。因为您的逻辑正在jQuery中发生另一方面,AJAX无法处理onSuccess事件中的代码。只需在PHP中回显一个值,现在就可以了。
echo $username;