无法执行登录功能。没有错误

时间:2016-09-21 16:54:32

标签: php mysql session

我好几天都在查看我的代码,但似乎无法找到问题所在。我是PHP的新手,所以我并不熟悉所有这些。

以下是我的代码。没有错误。没有注册的会话变量值。

DB-config.php中

<?php
$host = 'localhost';
$user = 'root';
$pass = '';
$db = 'mcsh';

$conn = mysqli_connect($host, $user, $pass, $db);

if (!$conn) {
    die("Connection failed: " . mysqli_connect_error());
}
?>

的login.php

<form id="user-login" action="index.php" method="POST">
    <h1>Administrator Login</h1>
    <input type="text" name="username" placeholder="Username" required/>
    <input type="password" name="password" placeholder="Password" required/>
    <button type="submit">Login</button>
    <a href="/">Forgot your password?</a>
</form>

<?php
if (!empty($_POST)) {
    if (!empty($_SESSION['username'])) {
        header("Location: index.php");
    }

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

    include("../config/db-config.php");

    $sql = "SELECT `userid`, `password` FROM users WHERE userid = '" . $username . "' AND userlevel = '99'";
    $result = mysqli_query($conn, $sql);

    if ($row = mysqli_fetch_assoc($result)) {
        if (password_verify($password, $row['password'])) {
            $_SESSION['username'] = $row['userid'];
            header("Location: index.php");
            exit;
        }
        else {
        ?>
            <p class="msg" id="error">Invalid username or password. Please try again.</p>
        <?php
        }
    }
    else {
    ?>
        <p class="msg" id="error">Invalid username or password. Please try again.</p>
    <?php
    }
}
?>

的index.php

<?php
session_start();
include("../config/config.php");
if (empty($_SESSION['username'])) {
    header("Location: login.php");
}
else {
//the rest of the index page...
?>

1 个答案:

答案 0 :(得分:0)

您在login.php中的表单提交到index.php。在index.php中,如果用户名尚未在会话中,则会重定向回login.php。在那里,您可以在PHP代码的开头检查if (!empty($_POST)) {

$_POST 为空,因为您已重定向到该页面,未发布到该页面,因此不会执行PHP代码。

删除action="index.php",该表单将提交给自己(login.php)。此外,将HTML表单代码移动到下面的PHP代码中,这样如果登录成功,您将无法在重定向标头之前输出。