注意:PHP 会话的未定义索引


Notice: Undefined index with PHP session

我有我的索引.php页面,用户可以在其中注册和登录会话。

这是我得到的错误:

注意:未定义的索引:用户名在 C:''wamp''www''CMS''admin''index.php 第 18 行。

我的代码有什么问题?

index.php的简短片段:

源代码

<?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>

这是我的登录名.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");
        }
    }
?>

在 PHP 脚本的第一行,写下以下内容:

if (session_status !== PHP_SESSION_ACTIVE) {
    session_start();
}

出于调试目的,请添加

var_dump($_SESSION);

if { } 块之后。您还必须确保会话存在于要使用的每个文件中。为了简化过程,我给你一个简短的例子:

  1. 你创建一个头.php文件,你从上面放置 if {} 块。
  2. 每当要在脚本中使用会话时,只需将该头文件包含在脚本的第一行即可。

    /

    /标头.phpif (session_status !== PHP_SESSION_ACTIVE) { session_start();}

    /

    /索引.php包括"标题.php";回显 $_SESSION["用户名"];

    登录.php包括"标题.php";$_SESSION['用户名'] = 'John Doe';