Я установил переменную сеанса для входа в систему пользователя, но она не работает на других страницах, кроме login.php.
login.php:
<?php
session_start();
if(isset($_POST['submit'])) {
$conn = mysqli_connect('localhost', 'cp72722_lucky', '3AIp!9f4', 'cp72722_lucky');
$user_username = mysqli_real_escape_string($conn, trim($_POST['username']));
$user_password = mysqli_real_escape_string($conn, trim($_POST['password']));
if(!empty($user_username) && !empty($user_password)) {
$query = "SELECT user_id , username FROM users WHERE username = '$user_username' AND pwd = SHA('$user_password')";
$data = mysqli_query($conn,$query);
if(mysqli_num_rows($data) == 1) {
$row = mysqli_fetch_assoc($data);
$user_value = $row['username'];
$user_id_value = $row['user_id'];
$_SESSION['username'] = $user_value;
$_SESSION['user_id'] = $user_id_value;
echo "Hello," . $_SESSION['username'];
$home_url = 'http://' . $_SERVER['SERVER_NAME'];
header('Location: ' . $home_url);
print_r($home_url);
exit();
}
else {
echo 'Извините, вы должны ввести правильные имя пользователя и пароль';
}
}
else {
echo 'Извините, вы должны заполнить поля правильно';
}
}
?>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<link href="style/style.css" rel="stylesheet">
</head>
<body>
<header>
<ul>
<li><a href="/">Главная</a></li>
</ul>
</header>
<h2>Вход</h2>
<div class="container">
<form action="http://<?php echo $_SERVER['SERVER_NAME']; ?>" method="POST">
<label for="username">Логин:</label>
<input type="text" name="username">
<label for="password">Пароль:</label>
<input type="password" name="password">
<button type="submit" name="submit">Вход</button>
<a href="auth/signup.php">Регистрация</a>
</form>
</div>
<footer>
<p>Все права защищены</p>
</footer>
</body>
</html>
Мой header.php отображается почти на всех страницах, и я хочу приветствовать пользователей после входа в систему. Если сеанс не установлен, то должна отобразиться форма для входа в систему. Проблема в том, что, если пользователь вошел в систему и ссылки профиля, он всегда отображает второй выбор, потому что сеанс не установлен. Как мне решить эту проблему?
header.php:
<?php
session_start();
print_r($_SESSION);
?>
...
<header id="header">
<?php
echo 'Glad to see you,'. htmlspecialchars($_SESSION['username']);
?>
...
<div>
<?php
if(!isset($_SESSION['username'])) {
?>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="POST">
<label for="username">Login:</label>
<input type="text" name="username">
<label for="password">Password:</label>
<input type="password" name="password">
<button type="submit" name="submit">Enter</button>
<a href="auth/signup.php">Registration</a>
</form>
<?php
}
else {
?>
<p><a href="myprofile.php">Profile</a></p>
<p><a href="exit.php">Exit(<?php echo $_SESSION['username']; ?>)</a></p>
<?php
}
?>
</div>