使用PHP和JavaScript从SQL数据库登录

使用PHP和JavaScript从SQL数据库登录,javascript,php,html,twitter-bootstrap-3,Javascript,Php,Html,Twitter Bootstrap 3,我创建了一个下拉登录面板(我使用的是Bootstrap3.3.7),我希望用户在其中输入注册期间使用的用户名和密码 如果登录成功,我希望将用户重定向到另一个名为profile.php的页面,否则如果登录不成功,登录面板页脚上将显示错误消息。以下是我的面板html代码: <li class="nav-link dropdown"> <a class="nav-link dropdown-toggle" href="#" id="navbarDropdown" role="bu

我创建了一个下拉登录面板(我使用的是Bootstrap3.3.7),我希望用户在其中输入注册期间使用的用户名和密码

如果登录成功,我希望将用户重定向到另一个名为
profile.php
的页面,否则如果登录不成功,登录面板页脚上将显示错误消息。以下是我的面板html代码:

<li class="nav-link dropdown">
  <a class="nav-link dropdown-toggle" href="#" id="navbarDropdown" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"><span class="glyphicon glyphicon-user"></span>Login</a>
  <div class="dropdown-menu" aria-labelledby="navbarDropdown">
    <div style="width:300px;">
      <div class="panel-heading text-center" style="color:black;">LOGIN</div>
      <div class="panel-heading">
        <label for="email">username</label>
        <input type="text" class="form-control" id="username">
        <label for="email">Password</label>
        <input type="password" class="form-control" id="password">
        <br>
        <a href="#" style="color:blue; list-style:none;">Forgotten password?</a><input type="submit" class="btn btn-success" style="float:right;" id="login" value="login">
      </div>
      <div class="panel-footer" id="login_msg"></div>
    </div>
  </div>
</li>
以下是我的php登录代码:

$("#login").click(function(event) {
  event.preventDefault();
  var u_name = $("#username").val();
  var pass = $("#password").val();
  $.ajax({
    url: "login.php",
    method: "POST",
    data: {
      userLogin: 1,
      userUname: u_name,
      userPassword: pass
    },
    success: function(data) {
      if (data == "truejsdhfkh") {
        window.location.href = "profile.php";
      } else {
        $("#login_msg").html(data);
      }
    }
  })
})
<?php
// connect to the database
include "db.php";
//session start
session_start();
//login page
if(isset($_POST['userLogin'])){

    $uname = mysqli_real_escape_string($con, $_POST['userUname']);
    $passwrd = mysqli_real_escape_string($con, $_POST['userPassword']);


    if(empty($uname) || empty($passwrd)){
        echo "
        <div class='alert alert-danger'>
            <a href='#' class='close' data-dismiss='alert' aria-label='close'>&times;</a><b>Please fill in all fields!</b>
        </div>
    ";
    exit();
    }else{
        $passwrd = md5($passwrd);
        $sql = "SELECT * FROM user_info WHERE username = '$u_name' AND passwrd = '$password'";
        $run_query = mysqli_query($con,$sql); 
        $count = mysqli_num_rows($run_query);
        if($count == 1){
            $row = mysqli_fetch_array($run_query);
            $_SESSION["uid"] = $row["user_id"];
            $_SESSION["uname"] = $row["username"];
            echo "truejsdhfkh";
    }
    }

}
?>

您的查询中有两个输入错误。第一个是在评论中指出的,似乎是你纠正的。第二个问题是,当$password不存在时,您正在传递它。你应该通过$passwrd

$sql = "SELECT * FROM user_info WHERE username = '$uname' AND passwrd = '$passwrd'";

                                                    ^^                    ^^
//Typos                                          $u_name                $password

很抱歉占用了太多的空间,但我无法添加评论。

您必须检查控制台日志。我该怎么做@Rawathemant您不能将密码存储为md5散列,这不是散列密码的安全方式。另外,您还应该看看准备好的语句,它们是比mysqli\u real\u escape\u string更好、更安全的防止sql注入的方法,在哪里定义了您在查询中使用的var
$u\u name
?(可能是打字错误,您的意思是
$uname
?)@ᴄʀᴏᴢᴇᴛ 我应该这样做吗?或者你说的$u_name=mysqli_real\u escape_string($con,$\u POST[“userUname”])是什么意思$password=md5($_POST[“userPassword”]);还是不行!当我没有输入用户名和密码时,我至少应该会收到错误,但当我单击button@collinsnjoka我在我的Web服务器上测试了它,登录和错误显示都对我有用。你能通过制作一个简单的html post表单和这个php代码来测试它吗?这将帮助你找到问题所在。
function login() {
  //THE GET ID
  $.post( "/login.php", {userLogin: 1, userUname: u_name,userPassword: pass })
    .done(function( data ) {
      if (data == "truejsdhfkh") {
        window.location.href = "profile.php";
      } else {
        $("#login_msg").html(data);
      };
    });
}