7.2. Skrypt logowania - kontrola formularza.

Teraz zaczniemy powoli ulepszać nasz skrypt, który odbiera dane z formularza. Dopiszemy warunki na sprawdzenie, czy użytkownik nie zostawił pola Login i (lub) Hasło pustych.

Najpierw w pliku logowanie_1.php zmienimy własność formularza action na "logowanie_2_1.php"

Listing 7.2.1. Fragment pliku logowanie_1.php

<form method="post" action="logowanie_2_1.php">

Kolejnym krokiem jest stworzenie pliku logowanie_2_1.php, w którym dopiszemy kod sprawdzający czy pola Login i Hasło nie były puste. Poniżej listing całego pliku logowanie_2_1.php

Listing 7.2.2. Plik logowanie_2_1.php

<HTML>
    <HEAD>
		<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <TITLE>Logowanie</TITLE>
	</HEAD>
	
<BODY>
<div style='text-align:center; width:500px; background: #FF6633; margin:auto;'>

<?php
//Odbieramy zmienne z formularza za pomocą metody POST
$login=$_POST['login'];
$haslo=$_POST['haslo'];
//Sprawdzamy czy uzytkownik wypełnił pole "Login", jeżeli pole jest puste to wyświetlany jest komunikat:
if($login=='') 
		echo"<div>
		<p>Nie można zalogować się na konto, proszę podać <a href='logowanie_1.php'>login</a>.</p>
		</div>";
//Sprawdzamy czy uzytkownik wypełnił pole "Hasło"
if($haslo=='')
	echo"<div>
	<p>Nie można się zalogować na konto, proszę podać <a href='logowanie_1.php'>hasło</a>.</p>
	</div>";
//Łączymy się z bazą danych funkcją mysqli_connect
$link = mysqli_connect(localhost, root,'', baranski);
if(!$link){echo"Błąd: ". mysqli_connect_errno()." ".mysqli_connect_error();}
mysqli_query($link, "SET NAMES 'utf8'");	//ustawienie polskich znaków
$result = mysqli_query($link, "SELECT * FROM uzytkownicy WHERE login='$login'");

// Funkcja mysqli_fetch_array() zapisuje wiersz wyniku w tablicy,
// w której elementami są wszystkie pola z wiersza bazy danych 
// gdzie login jest taki sam jaki podano w formularzu. 
$user = mysqli_fetch_array($result);

//Jeżeli zmienna $user jest pusta, czyli w bazie danych nie było użytkownika o podanym loginie
//to  zamykamy połączenie z bazą danych oraz wyświetlamy komunikat o błędzie:
if(!$user)
{
	// Funkcja mysqli_close() zamyka połączenie z bazą danych MySQl.
	mysqli_close($link);
	echo "<p>Błędny login. <a href='logowanie_1.php'>Zaloguj się</a></p>";
}
else 
{								// Jeżeli login był w bazie:
	if($user['haslo']==$haslo)	// - sprawdzamy czy hasło jest takie samo jak zapisane w bazie
	{							// jeżeli tak - wyświetlamy zawartość strony dostępną
								// dla zalogowanych użytkowników
		echo"<p>
			<h1>To jest zawartość strony widoczna po zalogowaniu</h1>
			<h3>Zalogowany użytkownik to: {$user['login']}</h3>
			</p>";
	}
	else						//jeżeli hasło jest inne - zamykamy połączenie z bazą oraz wyświetlamy komunikat
	{
		mysqli_close($link);
		echo  "<p>Błędne hasło. <a href='logowanie_1.php'>Zaloguj się</a></p>";
	}
}
?>
</div>
					
</BODY>
</HTML>