Parametry w URLu, a problem z formularzem.

0

Cześć. Mam takie pytanko. Mam logowanie, rejestrację w tym czystym php. W pliku header.php mam takie coś i importuję go do każdej podstrony:


<li><a href="index.php?logout=true" class="logout">Log out</a></li>

A na górze header.php mam:

	if(isset($_GET['logout']))
	{
		$user->logout();
	}

Funkcja:


	public function logout()
	{
		session_destroy();
		unset($_SESSION['user_session']);
		return true;
	}

Teraz po przeniesieniu na index.php w URLu mam to ?logout=true.

w index.php mam dwa formularze logowania oraz rejestracji. Przy próbie logowania nie mogę się zalogować. Jak usunę ?logout=true to normalnie wszystko działa.
Czym to jest spowodowane i jak to rozwiązać?
Przeładować stronę na index.php jeśli jest GET logout w URLu (czyli dopisać taki if w index.php)? Czy inaczej to da się rozwiązać? Dopisać przekierowanie na index.php w funkcji logout()?

Jeszcze teraz pomyślałem, że w takim wypadku zamiast a href mógłbym utworzyć formularz, ale czy dobrym wyjściem jest robienie wielu formularzy? Na przykład jak rozwiązać taki sam problem w przypadku opcji usuń post -gdzie postów na podstronie będzie 20. A href z parametrami? Tylko jak uniknąć takich sytuacji jak ta z problemem, z wysłaniem formularzu logowania?

0

no i działa dokładnie tak jak napisałeś :) jak masz w URLu logout=true, to domyślam się, że ten warunek zawsze się wykona i zaraz po tym jak stworzysz sesję, to ją usuwasz. Możesz to rozwiązać naprawdę prosto - po wylogowaniu przekieruj na inną stronę. Może być strona główna. Wtedy jak ktoś wejdzie na zalogowanie i będzie miał logout=true, to wyloguje i przeniesie go na główną.

PS. we funkcji logout tenreturn true jest całkowicie zbyteczne :)

0
public function logout()
    {
        session_destroy();
        unset($_SESSION['user_session']);
        header("Location: /index.php"); // <= index.php zmień na adres strony docelowej
    }

1 użytkowników online, w tym zalogowanych: 0, gości: 1