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
}