我正在尝试使用 php 创建一个登录系统,用于检查数据库中的用户名和密码。但问题是我在 foreach 中的 if 语句只检查我的数据库中的最后一个值。例如,如果我的数据库中有 5 个用户名和密码,我的 foreach 中的 if 语句只检查我是否输入了最后一个用户的用户名和密码,但是如果我给它一个用户名和密码,比如说第二个用户,它不会接受它。html代码:<!DOCTYPE html><head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>Login</title></head><body> <div class="top"> <div class="box"> <h2>Login</h2> <form action="findAccount.php" method="post"> <div class="inputBox"> <input type="text" name="username"> <label>Username</label> </div> <div class="inputBox"> <input type="password" name="password"> <label>Password</label> </div> <input type="submit" name="submit" value="Submit"> </form> </div> </div></body></html>php代码:<?php$dbh = new PDO('mysql:host=localhost;dbname=database_name', 'root', '');$username = $_POST['username'];$password = $_POST['password'];$sql = $dbh->prepare("SELECT * FROM tabel_name");$sql->execute();$result = $sql->fetchAll();foreach ($result as $r) { if ($username == $r['username'] && $password == $r['password']) { header('Location: mainPage.php'); } else { header('Location: login.php'); }}
1 回答
达令说
TA贡献1821条经验 获得超6个赞
header('Location: ...');就像一个终结者:它将浏览器重定向到另一个页面。在您的循环的第一次运行中,您以两种可能的方式之一使用它。你想要的是:
foreach ($result as $r) {
if ($username == $r['username'] && $password == $r['password']) {
header('Location: mainPage.php');
die();
}
}
header('Location: login.php');
顺便说一句,如果仅获取用户的用户记录并检查 0 或 1 个结果,则可以对此进行优化。
很重要
您将明文密码存储在数据库中。不要这样做。在某些州,这是法律禁止的!
- 1 回答
- 0 关注
- 110 浏览
添加回答
举报
0/150
提交
取消