0

我制作了一个员工管理系统,但我一直坚持需要超级管理员登录以检查/更改员工的详细信息。

超级管理员只是一个可以做所有事情的人。所以我手动将超级管理员的详细信息插入到数据库中。

这是代码,页面被称为 superadmin.php:

<!doctype html>
<html lang="en">
<head>
    <meta charset="utf-8"/>
    <title>Employee Management System</title>
    <link href="../styles/style-index.css" rel="stylesheet" type="text/css" media="screen"/>
    <link href="styles/style-superAdmin.css" rel="stylesheet" type="text/css" media="screen"/>
</head>
<body>
    <?php include_once("../php_includes/pageTop-template.php") ?>
        <div id="pageContentforSuperAdmin">
            <div id="content">
                <div id="form-superAdmin" align="center">
                    <h3>Please Login Super Admin</h3>           
                    <form id="superAdminForm" method="post" action="superadmin.php">
                        <input type="email" name="email" required class="txtInput" placeholder="Email..." autocomplete="off"/>
                        <br />
                        <input type="password" name="password" required class="txtInput" placeholder="Password..."/>
                        <br />
                        <input type="submit" name="submit" value="Enter" id="submit" />
                    </form>
                </div>
            </div>
        </div>
    <?php include_once("../php_includes/pageBottom-template.php") ?>
</body>
</html>

<?php
    include_once("../php_includes/db-connect.php");

    if (isset($_POST["submit"])) {
        $email = mysqli_real_escape_string($con, $_POST["email"]);
        $password = mysqli_real_escape_string($con, $_POST["password"]);

        $hash = password_hash($password, PASSWORD_DEFAULT);
        //echo $password;
        $hash_ver = password_verify($password, $hash);

        $sql = "SELECT * FROM employee WHERE email='".$email."' AND password='".$hash."'";
        $query = mysqli_query($con, $sql);
        $rows = mysqli_fetch_array($query);

        if ($rows["email"] == $email && $rows["password"] == $hash) {
            header("Location: admin-index.php");
        } else {
            echo 'Incorrect Credentials';
        }
    }

    mysqli_close($con);

?>

现在的问题是,我只是将输出作为不正确的凭据得到,我不知道为什么会这样?对于密码,我使用了新引入的 password_hash 对其进行哈希处理。我已将哈希码直接复制并粘贴到数据库表中。

任何帮助,将不胜感激。

4

2 回答 2

1

除了其他任何事情,我建议你尝试if用这个替换你的:

if (mysqli_num_rows($query) > 0) {
    header("Location: admin-index.php");
} else {
    echo 'Incorrect Credentials';
}

因为您已经从用户名和密码匹配的数据库中进行选择。

于 2013-09-18T10:03:24.573 回答
0

if ($rows["email"] == $email && $rows["password"] == $hash) {

应更改以检查是否找到记录$query

喜欢:

if(mysql_fetch_array($query) !== false) {

于 2013-09-18T10:02:31.833 回答