Logowanie (sesja + autoryzacja) zapętlenie

0

Witam, stworzyłem logowanie się, ale coś nie do końca wyszło, analizuję już kod nasty raz i nie wiem, gdzie jest błąd, może ktoś mi podpowie??

Aktualnie się zapętla jak wejdę na main.php to przerzuca na login.php, a jak wejdę na login.php to przerzuca na main.php i tak w kółko, jest gdzieś coś nie tak.

user image

login.php

<?php
$host = 'localhost';
$baza = 'mojabaza';
$uzytkownik = 'admin';
$haslo = 'admin';

function checkPass($user, $pass)
{
	//Uniemożliwienie odwołań do zmiennych globalnych
	global $host, $baza, $uzytkownik, $haslo;

	//Sprawdzenie długośći przekazanych ciągów dla kodowania UTF-8
	$userNameLength = strlen(utf8_decode($user));
	$userPassLength = strlen(utf8_decode($pass));

	if($userNameLength <3 || $userNameLength >20 || $userPassLength <5 || $userPassLength>40){
		return 2;
	}
	
	//Naziązywanie połączenia z serwerem MySQL
	$db_obj = new mysqli($host, $uzytkownik, $haslo, $baza);
	if($db_obj->connect_errno){
		//echo 'Wystąpił błąd podczas próby połączenia z serwerem MySQL...';
		//echo $db_obj->connect_error;
		return 1;
	}

	//Zabezpieczenie znaków specjalnych w parametrach
	$user = $db_obj->real_escape_string($user);
	$pass = $db_obj->real_escape_string($pass);

	//Wykonanie zapytania sprawdzającego poprawność danych
	$query = "SELECT Haslo FROM Users WHERE Nazwa='$user' ";
	if(!$result = $db_obj -> query($query)){
		//echo 'Wystąpił błąd: nieprawidłowe zapytanie...';
		$db_obj->close();
		return 1;
	}
	//Sprawdzanie wyników zapytania
	if($result->num_rows <> 1){
		//Brak użytkownika o wskazanej nazwie lub zbyt wiele wyników
		$result = 2;
	}
	else {
		$row = $result -> fetch_row();
		$pass_db = $row[0];
		//Wersja testowa bez kodowania haseł
		if($pass != $pass_db){
			//Wersja docelowa z kodowaniem haseł
			//if(crypt($pass, $pass_db)!=$pass_db){
			$result = 2;
		}
		else{
			$result = 0;
		}
	}
	//Zamknięcie połączenia z bazą i zwrócenie wyniku
	$db_obj->close();
	return $result;
}
//Rozpoczęcie sesji i procedur logowania
session_start();

//Użytkownik jest zalogowany
if(isset($_SESSION['Zalogowany'])){
	header("Location: main.php");
}

//Użytkownik niezalogowany i brak parametru hasło lub user
else if(!isset($_POST["haslo"]) || !isset($_POST["user"])){
	if(!isset($_SESSION['komunikat']))
		$_SESSION['komunikat'] = "Wprowadź nazwę i hasło użytkownika:";
	include('form.php');
}
//Użytkownik niezalogowany i ustawione parametry hasło i user
else{
	$val = checkPass($_POST["user"], $_POST["haslo"]);
	if($val==0){
		//Logowanie poprawne
		$_SESSION['Zalogowany'] = $_POST["user"];
		header("Location: main.php");
	}
	else if($val == 1){
		//Błąd serwera
		$_SESSION['komunikat'] = "Błąd serwera. Zalogowanie nie było możliwe.";
		include('form.php');
	}
	else if($val == 2){
		//Niepoprawne dane logowania
		$_SESSION['komunikat'] = "Nieprawidłowa nazwa lub hasło użytkownika.";
		include('form.php');
	}
	else {
		//Błąd systemu logowania, nieprawidłowa wartość zwrócona przez checkPass
		$_SESSION['komunikat'] = "Błąd serwera. Zalogowanie nie było możliwe";
		include('form.php');
	}
}
?>

main.php

<?php
session_start();
if(!isset($_SESSION['zalogowany'])){
	$_SESSION['komunikat'] = "Nie jesteś zalogowany!";
	header('Location: login.php');
	exit();
}
?>
<!DOCTYPE html>
<html>
<head>
	<meta http-equiv="Content-Type" content="text/html: charset=utf-8">
	<title>Strona główna</title>
</head>
<body>
	Jesteś zalogowany jako: <?php echo $_SESSION['zalogowany'] ?>
	<br />
	Pamiętaj o wylogowany przed opuszczeniem strony!
	<br /><br />
	<a href="logout.php">Wylogowanie</a>
</body>
</html>
2

Raz Zalogowany, raz zalogowany, a to różnica.

0

Działa :) Dzięki śliczne za pomoc :) Taka pierdoła a ja jestem taaki ślepy , Dzięki !

0

Sorka, juz docenione :)

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