Php, mysqladmin. Как перенаправить на индекс после того, как пользователь вошел в систему под своим именем, без отображения Уведомление: неопределенный индекс: с самого начала

Я хочу отобразить имя пользователя, который входит в систему при перенаправлении на index.php. Однако, когда я запускаю индекс (домашнюю страницу) без входа в систему. Я не хочу, чтобы он отображал сообщение об ошибке Примечание: неопределенный индекс: имя пользователя.

код index.php:

session_start();
<?= $_SESSION['username'] ?> 

код login.php:

<?php
    session_start();
    $conn = mysqli_connect("localhost", "root", "", "articleZone");

    $message = "";
    if (!empty($_POST["login"])) {
        $result = mysqli_query($conn, "SELECT * FROM users WHERE username='" . $_POST["user_name"] . "' and password = '" . $_POST["password"] . "'");
        $row = mysqli_fetch_array($result);

        if (is_array($row)) {
            $_SESSION["user_id"] = $row['userId'];
            $_SESSION["username"] = $row['username'];
            header("location: index.php");
        } else {
            $message = "Invalid Username or Password!";
        }
    }
    if (!empty($_POST["logout"])) {
        $_SESSION["user_id"] = "";
        session_destroy();

    }
    ?>



    <?php if (empty($_SESSION["user_id"])) { ?>
    form code..
         <?php
                            } else {
                                $result = mysqlI_query($conn, "SELECT * FROM users WHERE userId='" . $_SESSION["user_id"] . "'");
                                $row = mysqli_fetch_array($result);
                                ?>
                                <form action="" method="post" id="frmLogout">
                                    <div>Welcome <?php echo ucwords($row['username']); ?>, You are now logged in.<br>

2 ответа

Использование isset() проверить, существует ли переменная:

if(isset($_SESSION['username'])){
// THEN DO SOMETHING
}

Если вы используете только empty() вы получите неопределенный индекс

Вы хотите проверить против обоих isset() а также empty() перед выводом сеанса:

login.php:

session_start();
if (isset($_SESSION['username'] && !empty($_SESSION['username'])) {
  echo $_SESSION['username'];
}
else {
  // fallback behaviour
}
Другие вопросы по тегам