【发布时间】:2016-06-07 20:32:13
【问题描述】:
我有我的 index.php 页面,用户可以在其中注册和登录会话。
这是我得到的错误:
注意:未定义索引:第 18 行 C:\wamp\www\CMS\admin\index.php 中的用户名。
我的代码有什么问题?
index.php 的短 sn-p:
源代码:
<?php include "includes/admin_header.php" ?>
<div id="wrapper">
<!-- Navigation -->
<?php include "includes/admin_navigation.php" ?>
<div id="page-wrapper">
<div class="container-fluid">
<!-- Page Heading -->
<div class="row">
<div class="col-lg-12">
<h1 class="page-header">
Welcome To Admin
<small><?php echo $_SESSION['username'] ?></small>
</h1>
</div>
</div>
这是我的 login.php
源代码:
<?php include "db.php"; ?>
<?php session_start(); ?>
<?php
if (isset($_POST['login'])) {
$username = $_POST['username'];
$password = $_POST['password'];
// For login security
$username = mysqli_real_escape_string($connection, $username);
$password = mysqli_real_escape_string($connection, $password);
$query = "SELECT * FROM users WHERE username = '{$username}' ";
$select_user_query = mysqli_query($connection, $query);
if(!$select_user_query){
die("QUERY FAILED: " . mysqli_error($connection));
}
while($row = mysqli_fetch_array($select_user_query)) {
$db_user_id = $row['user_id'];
$db_username = $row['username'];
$db_user_password = $row['user_password'];
$db_user_firstname = $row['user_firstname'];
$db_user_lastname = $row['user_lastname'];
$db_user_role = $row['user_role'];
}
if ($username !== $db_username && $password !== $db_user_password) {
header("Location: ../index.php");
} else if($username === $db_username &&
$password === $db_user_password) {
$_SESSION['username'] = $db_username;
$_SESSION['firstname'] = $db_user_firstname;
$_SESSION['lastname'] = $db_user_lastname;
$_SESSION['user_role'] = $db_user_role;
header("Location: ../admin");
}
else {
header("Location: ../index.php");
}
}
?>
【问题讨论】:
-
在回显
if(isset($_SESSION['username'])){ echo $_SESSION['username']; }之前检查会话是否已设置 -
是否调用了
session_start()?索引真的存在吗?当你做var_dump($_SESSION)时你看到了什么? -
您是否在文件的开头调用了 session_start() ?
-
检查会话是否已设置,如果已设置,则将其转储到屏幕并查看数组中的内容。然后您可以从那里开始调试。