Witam, potrzebuję małej pomocy dotyczącej PHP. Z kursu wideo php z kanału Pasja informatyki zrobiłem system logowania. Niewiele w nim zmieniałem, więc kod jest podobny co w kursie, ale chciałem dodać funkcję zapamiętywania hasła. Stworzyłem więc pole typu checkbox, w pliku zaloguj.php po dokonaniu weryfikacji, czy użytkownik w bazie istnieje, oraz czy poprawne hasło zostało wpisane dodałem ifa z isset, który sprawdza, czy checkbox jest zaznaczony, jeśli tak to tworzy ciastko. W pliku index.php na początku, gdzie sesja startuje i jest sprawdzenie, czy sesja o takiej nazwie istnieje to leci przekierowanie do gra.php, dodałem drugiego isseta, który sprawdza, czy ciastko, wcześniej ustawione istnieje. A w pliku gra.php sprawdzenie na początku, czy sesja, albo ciastko nie jest ustawione to przekierowuje do indexa.php. I tu pojawia się problem. Po zalogowaniu za pomocą sesji, wszystko działa, ale przy użyciu opcji zapamiętania to występuje błąd w postaci pętli przekierowań. Jak to naprawić? Dodam, że zarówno sesja, jak i ciastko osobno działają. Ale razem już niekoniecznie, mimo, że w warunku, który sprawdzam daję ||, więc powinien być chyba sprawdzany jeden, lub drugi warunek z tego co kojarzę. Co robię źle? :c
To fragment z index.php
<?php
session_start();
if (isset($_SESSION['zalogowany']) || isset($_COOKIE['zalogowany']))
{
header('Location: gra.php');
exit();
}
?>
tu gra.php
<?php
session_start();
if(!isset($_SESSION['zalogowany'])||!isset($_COOKIE['zalogowany']))
{
header('Location: index.php');
exit();
}
?>
a tu zaloguj.php
if(password_verify($haslo,$wiersz['haslo']))
{
$_SESSION['zalogowany'] = true;
$_SESSION['id'] = $wiersz['id'];
$uzyt = $wiersz['nazwa'];
$_SESSION['nazwa'] = $wiersz['nazwa'];
if(isset($_POST['pamietaj']))
{
setcookie('zalogowany',$nazwa,time()+3600*24);
}
unset($_SESSION['blad']);
$rezultat->free_result();
header('Location: gra.php');
Dodam, że przy tych issetach próbowałem różnych kombinacji, także, żeby oba warunki musiały być spełnione
if(isset($_SESSION=['zalogowany'], $_COOKIE=['zalogowany']))
czy też zamiast || próbowałem dać &&, ale wszystko daje ten sam efekt. Z tego co rozumiem to po wpisaniu danych użytkownik jest przekierowany z index.php na gra.php, a stamtąd znów na index.php i tak w kółko, ale dlaczego, jeśli w indexie sprawdzane jest, czy jest ustawiona sesja lub ciastko, zaś w grze czy nie jest ustawione jedno, albo drugie?