php - 如何使用 mySQL 在 php 中创建一个简单的登录

标签 php mysql authentication

目前,我的所有用户都可以使用正确的用户名和密码登录到正确的页面,也可以使用不正确的用户名和密码登录。当我为我的结果更改 if 语句时也是如此,即使使用正确的用户名和密码,它也总是打印一条错误消息。

我该如何解决这个问题?我尝试了几个教程,但遇到了同样的问题!

<html>

<head>
</head>

<body>
 <form action="test.php" method="post">
    Username: <input type="text" name="Username" />
    Password: <input type="password" name="Password" />
    <input type="submit" value="login"/>
  </form>

 <?php

session_start();

include('connect-db.php');

if(isset($_POST['Username']) AND isset($_POST['Password'])) { 

$username = $_POST['Username'];
$password = $_POST['Password'];

$sql = "SELECT count(Login_ID) FROM users WHERE Username='$username' AND Password = '$password'";
$result = mysql_query($sql);

if($result!= 1) {
    echo "Invalid login";   
} else {
    header("Location:main.php");
}

}

?>

</body>

</html>

最佳答案

首先,不要使用mysql_函数。它们已被弃用并在 PHP7 中被删除。请改用 PDOmysqli。 对密码使用哈希。像那样将它们存储在数据库中是不安全的。看看password_hash()

同时转义这些值,因为你现在很容易受到 mysql 注入(inject)的攻击。用 mysql_real_escape_string() 逃避他们.然而,这仍然被弃用,所以最好使用 mysqli_real_escape_string() , 但要使用它,你必须对所有内容使用 mysqli_ 函数:)

您忘记获取 num_rows :)

$sql = "SELECT * FROM `users` WHERE `Username` = '$username' AND `Password` = '$password'";
$result = mysql_query($sql);
$num_rows = mysql_num_rows($result);

if($num_rows != 1) {
    echo "Invalid login";   
} else {
    header("Location:main.php");
}

关于php - 如何使用 mySQL 在 php 中创建一个简单的登录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36404254/

相关文章:

php - 防止空数据插入数据库

php - 我们可以通过一些代码强制清除浏览器缓存吗

c# - 使用参数从 DbCommand 获取 SQL 查询字符串

apache - 有没有办法在 apache 日志中获取内容长度(响应 header )?

android - 在 phonegap 应用程序上使用 Twitter 登录

php - 根据 URL 示例 (www.example.co.uk/essex.php) 从 MySQL 数据库中选择数据

php - 错误 SQL (1064) : You have an error in your SQL syntax; Error after alias

sql - 为什么这个左连接查询无法加载左表中的所有数据?

php - CakePHP 登录未通过身份验证

apache - 不同服务之间的 Kerberos 委托(delegate)