我在找登录页面的PHP教程。我已经做了同样的文件,但当我按下登录时,它显示一个空白的页面.我已经打开PHPMyAdmin页面,并添加了一个数据库,名为 admin_logs
连同表 users
.
<!DOCTYPE html>
<html>
<head>
<title>Teacher Login</title>
<link rel="stylesheet" type="text/css" href="logstyle.css">
</head>
<body>
<div class="header">
<h2>Login</h2>
</div>
<div class="input-group">
<form method="POST" action="functions.php">
<label>Username</label>
<input type="text" id="username" name="username" >
<label>Password</label>
<input type="password" id="password" name="password">
<button type="submit" class="btn" name="login_btn">Login</button>
</form>
</div>
</body>
</html>
<?php
$username = $_POST['username'];
$password = $_POST['password'];
$username = stripcslashes($username);
$password = stripcslashes($password);
$username = mysql_real_escape_string($username);
$password = mysql_real_escape_string($password);
mysql_connect("localhost", "root", "");
mysql_select_db("admin_logs");
$result = mysql_query("select * from users where username = '$username' and password = '$password'")
or die("Failed to query database".mysql_error());
$row = mysql_fetch_array($result);
if ($row['username'] == $username && $row['password'] == $password){
echo "Login success. Welcome".$row['username'];
} else {
echo "Failed to login.";
}
?>
这里有很多东西需要修复。
mysql_*
函数是 移除 从PHP。你应该使用 PDO 而不是。这可能是一个有点学习曲线,但一旦你得到它的窍门,你会有一个更容易的时间。
你应该 从来没有 把用户输入的信息放在一个查询字符串中 - 即使 escape_string()
因为仍然可能存在潜在的实现问题。例如,如果你有一个数字字段,你可能不会在值的周围加上引号,这样即使是 "转义 "的字符串也可以注入。使用 prepare
d语句来代替,并分别传入值。这将保证你的数据库查询的安全。
为你的MySQL数据库创建一个用户密码,并将其输入到你的数据库中。不用 root
用于数据库操作. 事实上,在你的 root
用户马上!!!
不要将密码存储为纯文本! 这是个 严肃 点名羞辱. 你应该使用 password_hash
保护用户注册时的密码,以便您 从来没有 知道用户的密码是什么。然后,使用 password_verify
来验证用户的身份。
你的逻辑可能需要重新设计。目前你是用给定的用户名和密码查找一个用户,然后检查用户名和密码是否匹配。很明显,他们是匹配的。你应该做的是--结合上面的步骤--检查该用户是否存在,然后检索(哈希!)密码。然后验证所给的密码是否与你所保存的哈希值相匹配,这时你就可以允许用户进入了。
一旦你的登录工作完成,你就可以使用 $_SESSION
来存储用户的登录状态。这将允许你只检查--例如 $_SESSION['userid']
来查看用户是否已经登录。
你真的应该寻找一些 与时俱进 关于这个东西的教程,因为事情已经发生了变化 大大 七年来 mysql_query
已被废弃!)。)
首先,你需要用SHA-256或SHA-1来加密密码,我不推荐MD5!
你不需要针对帖子的方法修改用户和密码。试试使用。
if (mysql_num_rows($row)) {
echo "Login success. Welcome".$row['username'];
} else {
echo "Failed to login.";
}
不要忘了设置用户认证后的session!
试着在函数.php中的PHP开头标签后添加以下几行内容。
> ini_set('display_errors', '1');
> ini_set('display_startup_errors','1');
> error_reporting(E_ALL);
回贴输出。
用你的逻辑->depracated,在我看来不是最好的方法。
> $result = mysql_query("select * from users where username =
> '$username' and password = '$password'")
> or die("Failed to query database".mysql_error());
> if ($result->num_rows > 0) {
> while ($row = $result->fetch_assoc()) {
> echo "Login success. Welcome".$row['username'];
>
> }
> } else {
> echo "Failed to login.";
> }