Na wstępie chciałbym uprzedzić, że jestem totalnym początkującym jeżeli chodzi o programowanie.
Postawiłem sobie za cel zrobienie prostego systemu z wyświetlaniem aktualności pobranych z bazy danych i z systemem logowania. O ile z zrobieniem systemu news'ów nie miałem problemu, tak z logowaniem idzie mi dość opornie i pojawił się problem, którego sam nie potrafię rozwiązać. Chciałem zrobić coś takiego, że po zalogowaniu zamiast przycisków "Logowanie" i "Rejestracja", wyświetlać się będą przyciski "Panel Użytkownika" i "Wyloguj". Niestety coś poszło nie tak i mimo, tego że niby całe logowanie kończy się pomyślnie.
Przy logowaniu ustawiam wartość zmiennej "zalogowany" na "true":
session_start();
if ((!isset($_POST['User_Name'])) || (!isset($_POST['User_Password'])))
{
header('Location: ../index.php');
exit();
}
require_once "./config/db_connection.php";
if ($Connection->connect_errno!=0)
{
echo "Error: ".$Connection->connect_errno;
}
else
{
$User_Name = $_POST['User_Name'];
$User_Password = $_POST['User_Password'];
$User_Name = htmlentities($User_Name, ENT_QUOTES, "UTF-8");
$rezultat = @$Connection->query("SELECT * FROM users WHERE User_Name='$User_Name'");
if($rezultat->num_rows != 0)
{
$wiersz = $rezultat->fetch_assoc();
if (password_verify($User_Password, $wiersz['User_Password']))
{
$Verified = $wiersz['Verified'];
if($Verified == 1)
{
**$_SESSION['zalogowany'] = true;**
$_SESSION['Id_User'] = $wiersz['Id_User'];
$_SESSION['User_First_Name'] = $wiersz['First_Name'];
$_SESSION['User_Last_Name'] = $wiersz['Last_Name'];
$_SESSION['User_Email'] = $wiersz['Email'];
unset($_SESSION['blad']);
$rezultat->free_result();
header("Location: ../index.php");
}
else
{
$_SESSION['blad'] = '<span style="color:red">Potwierdź konto!</span>';
header('Location: ../index.php');
}
}
else
{
$_SESSION['blad'] = '<span style="color:red">Nieprawidłowy login lub hasło!</span>';
header('Location: ../index.php');
}
}
else
{
$_SESSION['blad'] = '<span style="color:red">Nieprawidłowy login lub hasło!</span>';
header('Location: ../index.php');
}
$Connection->close();
}
Natomiast w innym pliku mam coś takiego:
<div id ="login">
<ul class = "text_login">
<?php
if((isset($_SESSION['zalogowany'])) && ($_SESSION['zalogowany']==true))
{
echo '<li><a href="#"><button class="login_button">Panel Użytkownika</button></a></li>
<li><a href="../logout.php" ><button class="login_button">Wyloguj</button></a></li>';
}
else
{
echo '<li><a href="login.php"><button class="login_button">Logowanie</button></a></li>
<li><a href="/register.php" ><button class="login_button">Rejestracja</button></a></li>';
}
?>
</ul>
</div>
</div>
Wydawało mi się, że przy pomocy sesji, wartość zmiennej 'zalogowany' powinna przejść do innego pliku w którym jest otwarta sesja i wpłynąć na to co jest wyświetlane. Niestety wyświetla mi cały czas zawartość po else.(Samo logowanie chyba raczej działa poprawnie, bo przenosi mnie do dobrej lokalizacji.) Nie wywala żadnego błędu, wszędzie ustawione session_start(). Będę bardzo wdzięczny za oświecenie mnie co robię źle. :)