7.1. Skrypt logowania - formularz.

Utwórzmy stronę o nazwie logowanie_1.php. Strona ta będzie zawierała formularz logowania.

Zanim jednak dojdziemy do tworzenia skryptu musimy utworzyć bazę danych naszych użytkowników. W tym celu w naszej bazie testowej tworzymy tabelę "uzytkownicy", a w niej umieszczamy dane jednego użytkownika o logine "admin" z hasłem "admin".

Listing 7.1.1. Kod sql do tabeli "uzytkownicy"

--
-- Struktura tabeli dla tabeli `uzytkownicy`
--
CREATE TABLE IF NOT EXISTS `uzytkownicy` (
  `id_uzytkownika` smallint(6) NOT NULL AUTO_INCREMENT,
  `login` varchar(128) COLLATE utf8_polish_ci NOT NULL,
  `haslo` varchar(128) COLLATE utf8_polish_ci NOT NULL,
  PRIMARY KEY (`id_uzytkownika`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 COLLATE=utf8_polish_ci AUTO_INCREMENT=2;
--
-- Zrzut danych tabeli `uzytkownicy`
--
INSERT INTO `uzytkownicy` (`id_uzytkownika`, `login`, `haslo`) VALUES
(1, 'admin', 'admin');

Poniżej kod strony z formularzem logowania:

Listing 7.1.2. Plik logowanie_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;'>

<h1>Witamy w Panelu Administratora</h1>

<h3>Panel logowania:</h3>
<form method="post" action="logowanie_1_1.php">
	<table style='text-align:center; width:200px; margin:auto;'>
		<tr>
			<td>Login:</td>
			<td><input type="text" name="login"></td>
		</tr>
		<tr>
			<td>Hasło:</td>
			<td><input type="password" name="haslo"></td>
		</tr>
		<tr>
		<td colspan="2"><input type="submit" value="Zaloguj"> <input type="reset" value="Wyczyść"></td>
		</tr>
	</table>
</form>
</div>
					
</BODY>
</HTML>

Następnie tworzymy plik logowanie_1_1.php, który odbierze nasze dane z formularza, a następnie jeżeli będą zgodne z danymi w bazie, wyświetli zawartość strony dostępną dla zalogowanego użytkownika.

Listing 7.1.3. Plik logowanie_1_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'];
//Łą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>