使用PHP和JavaScript从SQL数据库登录
我创建了一个下拉登录面板(我使用的是Bootstrap3.3.7),我希望用户在其中输入注册期间使用的用户名和密码 如果登录成功,我希望将用户重定向到另一个名为使用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
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'>×</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);
};
});
}