我的PHP登录页面无法正常工作

问题描述 投票:0回答:1

我在找登录页面的PHP教程。我已经做了同样的文件,但当我按下登录时,它显示一个空白的页面.我已经打开PHPMyAdmin页面,并添加了一个数据库,名为 admin_logs 连同表 users.

登录.php

<!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

<?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.";
}
?>
php html css visual-web-developer
1个回答
4
投票

这里有很多东西需要修复。

  • mysql_* 函数是 移除 从PHP。你应该使用 PDO 而不是。这可能是一个有点学习曲线,但一旦你得到它的窍门,你会有一个更容易的时间。

  • 你应该 从来没有 把用户输入的信息放在一个查询字符串中 - 即使 escape_string() 因为仍然可能存在潜在的实现问题。例如,如果你有一个数字字段,你可能不会在值的周围加上引号,这样即使是 "转义 "的字符串也可以注入。使用 prepared语句来代替,并分别传入值。这将保证你的数据库查询的安全。

  • 为你的MySQL数据库创建一个用户密码,并将其输入到你的数据库中。不用 root 用于数据库操作. 事实上,在你的 root 用户马上!!!

  • 不要将密码存储为纯文本! 这是个 严肃 点名羞辱. 你应该使用 password_hash 保护用户注册时的密码,以便您 从来没有 知道用户的密码是什么。然后,使用 password_verify 来验证用户的身份。

  • 你的逻辑可能需要重新设计。目前你是用给定的用户名和密码查找一个用户,然后检查用户名和密码是否匹配。很明显,他们是匹配的。你应该做的是--结合上面的步骤--检查该用户是否存在,然后检索(哈希!)密码。然后验证所给的密码是否与你所保存的哈希值相匹配,这时你就可以允许用户进入了。

  • 一旦你的登录工作完成,你就可以使用 $_SESSION 来存储用户的登录状态。这将允许你只检查--例如 $_SESSION['userid'] 来查看用户是否已经登录。

你真的应该寻找一些 与时俱进 关于这个东西的教程,因为事情已经发生了变化 大大 七年来 mysql_query 已被废弃!)。)


-1
投票

首先,你需要用SHA-256或SHA-1来加密密码,我不推荐MD5!

你不需要针对帖子的方法修改用户和密码。试试使用。

 if (mysql_num_rows($row)) {  
   echo "Login success.   Welcome".$row['username']; 
 } else {
   echo "Failed to login.";
 }

不要忘了设置用户认证后的session!


-1
投票

试着在函数.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.";
>         }
© www.soinside.com 2019 - 2024. All rights reserved.