Ошибка в сессии php

136
15 сентября 2019, 21:40

Подскажите пожалуйста, есть код, который открывает сессию php:

<?php
session_start();
$admin_login="Admin"; //Логин админа
$admin_password="superpass"; //Пароль админа
if(isset($_POST['password'])):
$_SESSION[$_POST['login']]=$_POST['password'];
header("Location: {$_SERVER['PHP_SELF']}");
exit;
endif;
if($_SESSION[$admin_login]!=$admin_password)
{
?>
<link rel="stylesheet" href="/4/style.css">
<form action="<?php $_SERVER['PHP_SELF']; ?>" method="POST" id="login">
 <h1>Форма входа</h1>
    <fieldset id="inputs">
        <input id="username" type="text" name="login" placeholder="Логин" autofocus required>   
        <input id="password" type="password" name="password" placeholder="Пароль" required>
    </fieldset>
    <fieldset id="actions">
        <input type="submit" id="submit" value="ВОЙТИ">
    </fieldset>
</form>
<?php
exit;
}
else
{
   ?>
   <a href='/4/exit.php'>Выход</a>
<?php
}
?>

При создании и удалении сессии в error_log записывается такая ошибка

PHP Notice: Undefined index: Admin in /home/4/index.php on line 12

В чем может быть проблема?

Answer 1

Судя по вашему коду лучше всего

if($_SESSION[$admin_login]!=$admin_password)

исправить на

if(!isset($_SESSION[$admin_login]) || $_SESSION[$admin_login]!=$admin_password)

В таком случае сначала проверяется существование переменной. Если переменной нет или она не равна $admin_password, то срабатывает условие и выводится форма.

Answer 2

У вас в коде есть переменная $admin_login = "Admin" и далее вы обращаетесь к ней как $_SESSION[$admin_login], таким образом обращение выглядит вот так $_SESSION['Admin'], то есть значение этой переменной используется как индекс суперглобального масcива $_SESSION, скорее всего такого не существует в сессии. То есть у вас должно существовать что то вроде этого $_SESSION['admin_login'] = $admin_login, ранее опрделенное в сессии. Возможно я неправильно понял код, но на мой взгляд проблема в этом. Надеюсь Вам поможет.

READ ALSO
Как принять и обработать canvas на сервере?

Как принять и обработать canvas на сервере?

Не получается принять на сервере canvasОн даже не фигурирует в массиве $_POST HTML

170
Как правильно создать меню в PHP

Как правильно создать меню в PHP

Создал меню в отдельном файле "headerphp" На главной странице сайта "index

155
C++ обьяснить участок кода

C++ обьяснить участок кода

Описан классНе понимаю двух моментов:

159
Переименование файлов в каталоге

Переименование файлов в каталоге

Подскажите почему не происходит замена, компилирует, но замена не происходит

191