当我登录时,我正在使用mysql.user,但如果用户有密码我无法登录。如果我使用任何用户使用密码登录,则该页面无法登录到其他php。
登录时输入的用户将用于数据库的连接。
<?php session_start(); ?>
<!DOCTYPE HTML>
<html>
<head>
<title>Log in</title>
<meta charset="UTF-8" />
<link rel="stylesheet" type="text/css" href="css/reset.css">
<link rel="stylesheet" type="text/css" href="css/structure.css">
<?php include('connection.php'); ?>
</head>
<body>
<form class="box login" method="post">
<fieldset class="boxBody">
<label>Username</label>
<input type="text" tabindex="1" placeholder="Username" required name="username" id="username">
<label><label class="rLink" tabindex="5">Optional</label>Password</label>
<input type="password" tabindex="2" placeholder="Password" name="password" id="password" >
</fieldset>
<footer>
<input type="submit" class="btnLogin" value="Login" tabindex="4" name="sent">
</footer>
</form>
<?php
if (isset($_POST['sent'])) {
$servername = "localhost";
$username = ($_POST['username']);
$password = ($_POST['password']);
$message="";
// Create connection
$result = $conn->query("SELECT user FROM mysql.user where user='$username' and password='$password'");
if ($result->num_rows > 0) {
$_SESSION["uname"] = "$username";
$_SESSION["pass"] = "$password";
echo '<script type="text/javascript">alert(<?php echo "Success!";?>)</script>';
header("location: main.php");
} else {
$message = "Successfuly entered! hi! $username";
echo '<script type="text/javascript">alert(<?php echo "$message";?>)</script>';
}
}
// Check connection
?>
</body>
</html>
答案 0 :(得分:1)
您最好检查可能发生的数据库错误
$conn->query("SELECT user FROM mysql.user where user='$username' and password='$password'");
检查查询是否先执行。 它也更好地使用这个
"SELECT * FROM mysql.user WHERE user= ?"
检查行数后。您可以使用用户的盐哈希当前密码,然后检查它们是否相等。
为了更安全,请使用准备好的语句。并检查是否也设置了$_POST['username']
和$_POST['password']
(即使您的输入字段是“必需的”)
为了回应您的错误,您可以使用错误ID
的段落<p id="error"></p>
回应这个
'<script>
document.getElementById("error").innerHTML = "'.$error.'"
</script>'
我的第一个回答是抱歉英语不好。