@omerkhan

Как исправить "Undefined array key «login» in" в сессиях, PHP?

Здравствуйте. У меня возникла ошибка. Я работаю с сессиями и хочу сделать, так, чтобы когда человек авторизовался его логин и пароль не пропадали с поля "логин" и "пароль". Но у меня возникает ошибка - сессии login и pass undefined. Но если авторизоваться то все это будет выводится в поле. Но все же эта ошибка режет глаз. Хотел исправить это дело с помощью:
<?php
if($_SESSION['login'] == '' || $_SESSION['pass']):
?>
<?php
else:
?>
<?php
endif;
?>

Все вроде должно работать. Но выводит ошибку
Undefined array key "login" in C:\OpenServer\domains\filephp\reg.php on line 15.
Вот код:
<b>reg.php:</b>
<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<meta name="viewport" content="width=device-width, initial-scale=1.0">
	<link rel="stylesheet" href="css/style.css">
	<title>Document</title>
</head>
<body>
	<?php 
		require_once 'header.html';
		session_start();
	?>
	<?php
		if($_SESSION['login'] == '' || $_SESSION['pass'] == ''):
	?>
	<div class="col">
 		<div class="row">
 			<h1>Регистрация</h1>
			<form method = "post" action = "check_reg.php">
				<input type = "text" name = "login" placeholder = "Ваш логин">
				<input type = "password" name = "pass" placeholder = "Ваш пароль">
				<input type = "submit" value = "Зарегистрироваться">
			</form>
		</div>
		<div class="row" style = "float: right; margin-top: -212px">
			<h1>Авторизация</h1>
			<form method = "post" action = "login.php">
				<input type = "text" name = "login" placeholder = "Ваш логин" value = >
				<input type = "password" name = "pass" placeholder = "Ваш пароль">
				<input type = "submit" value = "Войти">
			</form>
		</div>
	</div>
	<?php
		else:
	?>
	<div class="col">
		<div class="row">
			<h1>Регистрация</h1>
			<form method = "post" action = "check_reg.php">
				<input type = "text" name = "login" placeholder = "Ваш логин">
				<input type = "password" name = "pass" placeholder = "Ваш пароль">
				<input type = "submit" value = "Зарегистрироваться">
			</form>
		</div>
		<div class="row" style = "float: right; margin-top: -212px">
			<h1>Авторизация</h1>
			<form method = "post" action = "login.php">
				<input type = "text" name = "login" placeholder = "Ваш логин" value = "<?=?>">
				<input type = "password" name = "pass" placeholder = "Ваш пароль">
				<input type = "submit" value = "Войти">
			</form>
		</div>
	</div>
<?php endif;?>
	<?php
		require_once 'footer.html';
	?>
</body>
</html>
<b>check_reg.php:</b>
<?php
	session_start();
	$login = htmlspecialchars(trim($_POST['login']));
	$pass = htmlspecialchars(trim($_POST['pass']));
	if(strlen($login) < 6)
		echo 'Логин не менее 6 символов';
	else if(strlen($pass) < 8)
		echo 'Пароль не менее 8 символов';
	$mysql = new mysqli('localhost', 'root', '', 'register');
	$mysql -> query("INSERT INTO `users` (`login`, `pass`) VALUES('$login', '$pass')");
	$_SESSION['login'] = $user['login'];
	$_SESSION['pass'] = $user['pass'];
	$mysql -> close();
	header('Location: reg.php');
	exit();
?>

screen
612337c03bc0f146681910.jpeg
  • Вопрос задан
  • 13632 просмотра
Пригласить эксперта
Ответы на вопрос 3
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
if (($_SESSION['login'] ?? '') === '');
Ответ написан
Комментировать
delphinpro
@delphinpro Куратор тега PHP
frontend developer
Проверяйте наличие ключа array_key_exists
Ответ написан
@JohnDidact
Нуб во всём
<?php
session_start();
require_once 'header.html';
if(!isset($_SESSION['login'], $_SESSION['pass']) || $_SESSION['login'] == '' || $_SESSION['pass'] == ''):
?>
Регистрация
Авторизация
<?php
else:
?>
Регистрация
Авторизация
<?php
endif;
require_once 'footer.html';
?>
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы