Подскажите пожалуйста, есть код, который открывает сессию 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
В чем может быть проблема?
Судя по вашему коду лучше всего
if($_SESSION[$admin_login]!=$admin_password)
исправить на
if(!isset($_SESSION[$admin_login]) || $_SESSION[$admin_login]!=$admin_password)
В таком случае сначала проверяется существование переменной. Если переменной нет или она не равна $admin_password, то срабатывает условие и выводится форма.
У вас в коде есть переменная $admin_login = "Admin" и далее вы обращаетесь к ней как $_SESSION[$admin_login], таким образом обращение выглядит вот так $_SESSION['Admin'], то есть значение этой переменной используется как индекс суперглобального масcива $_SESSION, скорее всего такого не существует в сессии. То есть у вас должно существовать что то вроде этого $_SESSION['admin_login'] = $admin_login, ранее опрделенное в сессии. Возможно я неправильно понял код, но на мой взгляд проблема в этом. Надеюсь Вам поможет.
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости