我正在尝试向登录用户显示一条欢迎消息,例如“Hello Jordan”。我似乎无法弄清楚我做错了什么。我将在下面给我的admin index.php源代码和我的MySQL数据库的图像。
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
}
?>
答案 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
}
?>
现在您可以看到预期的输出