为什么不显示登录名?

时间:2014-06-11 06:42:13

标签: php mysql admin

我正在尝试向登录用户显示一条欢迎消息,例如“Hello Jordan”。我似乎无法弄清楚我做错了什么。我将在下面给我的admin index.php源代码和我的MySQL数据库的图像。

MySQL Database

admin index.php

<?php
    session_start();

    include_once('../includes/connection.php');


    if (isset($_SESSION['logged_in'])) {
        // Display Index

?>
        <html xmlns="http://www.w3.org/1999/xhtml">
            <head>
                <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
                <title>Jordan CMS</title>
                <link rel="stylesheet" href="../assets/style.css" />
            </head>

            <body>
                <div class="container">
                    <a href="index.php" id="logo">CMS</a>
                    <? echo "Hello" . $_SESSION['username']; ?>
                    <br />

                    <ol>
                        <li><a href="add.php">Add Article</a></li>
                        <li><a href="delete.php">Delete Article</a></li>
                        <li><a href="pages.php">Add Page</a></li>
                        <li><a href="users.php">Add Users</a></li>
                        <li><a href="logout.php">Logout</a></li>
                    </ol>
                </div>
            </body>
        </html>
<?php
    } else {
        // Display Login
        if (isset($_POST['username'], $_POST['password'])) {
            $username = $_POST['username'];
            $password = md5($_POST['password']);

            if (empty($username) or empty($password)) {
                $error = 'All fields are required!';
            } else {
                $query = $pdo->prepare("SELECT * FROM users WHERE username = ? AND password = ?");
                $query->bindValue(1, $username);
                $query->bindValue(2, $password);

                $query->execute();

                $num = $query->rowCount();

                if ($num == 1) {
                    // user entered correct details
                    $_SESSION['logged_in'] = true;

                    header('Location: index.php');
                    exit();
                } else {
                    // user entered false details
                    $error = 'Incorrect details!';
                }
            }
        }
?>
        <html xmlns="http://www.w3.org/1999/xhtml">
            <head>
                <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
                <title>Jordan CMS</title>
                <link rel="stylesheet" href="../assets/style.css" />
            </head>

            <body>
                <div class="container">
                    <a href="index.php" id="logo">CMS</a>

                    <br /><br />

                    <form action="index.php" method="post" autocomplete="off">
                            <input type="text" name="username" placeholder="Username" />
                            <input type="password" name="password" placeholder="Password" />
                            <input type="submit" value="Login" />
                    </form>

                    <?php if (isset($error)) { ?>
                        <small style="color: #AA0000;"><?php echo $error; ?></small>
                    <?php } ?>
                </div>
            </body>
        </html>
        <?php
    }

?>

2 个答案:

答案 0 :(得分:4)

<? echo "Hello" . $_SESSION['username']; ?>

不显示用户名,因为您从不填充$_SESSION['username']。在成功登录时执行此操作。

<强>这里:

           if ($num == 1) {
                // user entered correct details
                $_SESSION['logged_in'] = true;
                $_SESSION['username'] = $_POST['username'];   // This is missing
                header('Location: index.php');
                exit();
            }

答案 1 :(得分:0)

您必须创建单独的文件以检查成功登录

<?php
$uname=$_POST['username'];
$password=$_POST['upassword'];
$sql="SELECT * FROM users WHERE username ='".$uname."' and password='".base64_encode($password)."'";
$result=mysql_query($sql);
$count=mysql_num_rows($result);
if($count==0)
{
//Redirect to login form details wrong
}
else 
{
$userData = mysql_fetch_array($result);

$_SESSION['id'] = $userData['id'];
$_SESSION['username'] = $userData['username'];

//Redirect to welcome screen
}

?>

现在您可以看到预期的输出