因此,我一直遵循this youtube指南来使用PHP设置登录系统,当我进入身份验证部分时遇到了麻烦,在该部分中,用户名和密码针对数据库进行了检查。即使提交了数据库中正确的用户名和密码,login.php中的if语句也会回显“错误的用户名或密码!”。
dbh.php <=这连接到本地数据库
<?php
$conn = mysqli_connect("localhost", "admin", "admin", "user_list");
if(!$conn) {
die("Connection failed");
}
?>
sign_up.php <=获取用户帐户信息并将其输入数据库
<?php
include 'dbh.php';
$first = $_POST['first'];
$last = $_POST['last'];
$uid = $_POST['uid'];
$pwd = $_POST['pwd'];
$sql = "INSERT INTO user (first, last, uid, pwd)
VALUES ('$first', '$last', '$uid', '$pwd')";
$result = mysqli_query($conn, $sql);
header("Location: login_page.html");
?>
login.php <=这需要用户输入并检查数据库中是否存在匹配对
<?php
include 'dbh.php';
$uid = $_POST['uid'];
$pwd = $_POST['pwd'];
$sql = "SELECT * FROM user WHERE uid='$uid' AND pwd='$pwd'";
$result = mysqli_query($conn, $sql);
if (!$row = mysqli_fetch_assoc($result)) {
echo "Your username or password is incorrect!";
} else {
echo "You are logged in!";
}
?>
login_page.html(并非完整页面,仅是登录/注册表单)
<div class="content">
<form action="login.php">
<input type="text" name="uid" placeholder="Username"><br>
<input type="password" name="pwd" placeholder="Password"><br>
<button type="submit">LOG IN</button>
<br><br><br>
</form>
<form action="signup.php" method="POST">
<input type="text" name="first" placeholder="Firstname"><br>
<input type="text" name="last" placeholder="Lastname"><br>
<input type="text" name="uid" placeholder="Username"><br>
<input type="password" name="pwd" placeholder="Password"><br>
<button type="submit">SIGN UP</button>
</form>
</div>
最佳答案
你可以这样这可能有效
<?php
include 'dbh.php';
$uid = $_POST['uid'];
$pwd = $_POST['pwd'];
$sql = "SELECT * FROM user WHERE uid='$uid' AND pwd='$pwd'";
$result = mysqli_query($conn, $sql);
if ($row = mysqli_fetch_assoc($result)) {
echo "You are logged in!";
} else {
echo "Your username or password is incorrect!";
}
?>
您可以删除此标志,它将起作用
要么
这也是一个解决方案
if (mysqli_num_rows($result)) {
echo "You are logged in!";
} else {
echo "Your username or password is incorrect!";
}
关于php - MySQL和PHP登录用户名和密码检查,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41906373/