Personalizacja jest to inaczej rozpoznawanie użytkownika. Pojęcie personalizacji związane jest ściśle z logowaniem. Logowanie umożliwia dostęp do strony zabezpieczonej, po podaniu właściwego loginu i hasła.
Logowanie użytkowników oparte będzie na
cookies oraz bazie danych MySQL, dane będą sprawdzane za pomocą JavaScript’u. Na początku musimy stworzyć formularz do logowania oraz ściśle tajną stronę. Zalogowanie będzie możliwe tylko na 1 godzinę a hasła zostaną zaszyfrowane. Do dzieła!
Na początku musimy stworzyć formularz do logowania:
Tak jak większość stron WWW, tak i nasza musi być stworzona zgodnie z regułami. Na samym początku otwórz dowolny edytor HTML, np. Notatnik i zpapisz dokument jako login.html. Teraz postępuj zgodnie z zaleceniami.
Najpierw musisz zdefiniować nagłówki dokumentu HTML:
<HTML> <HEAD> <TITLE>Logowanie i personalizacja użytkowników </TITLE> |
Ponieważ będziemy korzystać z funkcji napisanych w języku JavaScript musimy je zdefiniować w sekcji nagłówkowej naszego dokumentu. Znajomość JavaScript nie jest wymagana, ale jeśli interesuje Cię dogłębna budowa tych funkcji to zapoznaj się z odpowiednim działem.
<SCRIPT LANGUAGE=”JavaScript” TYPE=”text/javascript”> <!– Funkcja kolorująca //–> function koloruj(omega, colorek){ omega.style.color = colorek; <!– Zastosowanie koloru czcionki //–> } <!– Funkcja sprawdzająca wpisanie pseudonimu //–> function pseudo(){ <!– Funkcja sprawdzająca wpisanie hasła //–> function pass(){ <!– Główna funkcja sprawdzająca //–> function sprawdz() { |
Skoro zakończyłeś już wypisywanie funkcji JavaScript i zamknąłeś sekcję nagłówkową dokumentu, to możemy przystąpić do zaprojektowania bodowy frmularza. Pamiętaj jednak, że na początku musisz otworzyć sekcje tzw. ciała dokumentu, czyli:
<BODY BGCOLOR=#0066FF> |
Teraz zajmiemy się samym formularzem:
<!– Tworzymy formularz do logowania //–> <FORM NAME=”loguj” METHOD=POST ACTION=”login.php”> |
Zapewne zauważyłeś, że przy tworzeniu naszego formularza wykorzystaliśmy trzy różne atrybuty. Pierwszy z nich to name – przydatny przy stosowaniu JavaScript, definiuje nazwę formularza, na którym będziemy operować. Drugim atrybutem jest method czyli metoda, jaką będziemy wysyłać dane. Ponieważ nie chcemy aby podane dane były widoczne w adresie strony, nadajemy mu wartość post. Trzecim i ostatnim tu atrybutem jest action, czyli adres pliku, za pomocą którego będziemy logować się do tajnej strony. Teraz przejdźmy do opisu poszczególnych elementów formularza (zauważ, że wielokrotnie będę używał znaczników HTML, ale nie będę ich opisywał):
<TABLE WIDTH=50% BORDER=1 CELLSPACING=0 CELLPADDING=0 BORDERCOLOR=#000000 BGCOLOR=#FFCC00> <TR><TD COLSPAN=2 WIDTH=100%><B>Logowanie użytkownika</B></TD></TR> <TR><TD ID=”pseudo” WIDTH=25%><B>Login:</B></TD><TD><INPUT TYPE=TEXT NAME=”nick” maxlength=25></TD></TR> <TR><TD ID=”haslo'”><B>Hasło:</B></TD><TD><INPUT TYPE=PASSWORD NAME=”pass” maxlength=25></TD></TR> <TR><TD COLSPAN=2><INPUT TYPE=BUTTON VALUE=”Zaloguj” onClick=”sprawdz();”></TD></TR> </TABLE> </FORM> |
Od teraz po wysłaniu formularza nasz login będzie przechowywany w zmiennej $nick, a hasło w zmiennej $pass. Po zapisaniu treści formularza możesz zamknąć wszystkie znaczniki HTML i przystąpić do następnego punktu.
</BODY> </HTML> |
Mamy już gotowy dokument z formularzem, a zatem przejdźmy do budowy samego skryptu PHP i konstrukcji bazy danych MySQL.
Aby użytkownik mógł się zalogować musimy przechowywać gdzieś dane o nim. Do tego posłuży nam baza danych MySQL.
Wykonujemy poniższe zapytanie SQL:
CREATE DATABASE login; |
Tym niewielkim fragmentem kodu utworzyliśmy nową bazę danych.
CREATE TABLE login_user( id INT(9) auto_increment, login VARCHAR(25), pass VARCHAr(255), PRIMARY KEY(id) ); |
W powyższym zapytaniu utworzyliśmy tabelę w której będziemy przechowywać login użytkownika oraz hasło. Kolumna id jest kolumną porządkową, która sama przyznaje sobie wartość.
Żeby utworzyć nowego użytkownika musimy wykonać poniższy kod SQL:
INSERT INTO VALUES(0, ‘Webinside’, ‘53f0105c40bb46e2f953a6b59bd891c0’); |
Następnie otwieramy edytor www i wpisujemy kod który uwierzytelni userów:
$dbhost = „localhost”; $dbuser = „root”; $dbpass = „pass”; |
Za pomocą tych trzech zmiennych ustalamy jak PHP ma się połączyć z bazą danych.
Zmienna $dbhost określa host bazy. Natomiast dwie pozostałe określają użytkownika i hasło bazy danych.
$link = @mysql_pconnect($dbhost, $dbuser, $dbpass); $wp = @mysql_select_db(„baza”, $link); |
Powyższymi poleceniami połączyliśmy się do serwera baz danych i wybraliśmy odpowiednią bazę.
if(!$link || !$wp){ echo”Logowanie tymczasowo niemożliwe!!!<BR>”; } |
Jeżeli nie możemy nawiązać połączenia z bazą musimy o tym poinformować użytkownika.
else{ $cpass=md5($pass); |
Polecenie md5 służy do zaszyfrowania hasła.
$sql = „SELECT * FROM login_user WHERE login=’$nick’ AND pass=’$cpass'”; $wynik = mysql_query($sql); $data = mysql_fetch_array($wynik); if(!$wynik || $nick!=$data[login] || $cpass!=$data[pass]){ |
Jeżeli dane się nie zgadzają wyświetlamy błąd
echo”Logowanie nieprawidłowe!!!<A HREF=\”login.html\”>Jeszcze raz</A>”; }else{ |
Jeżeli użytkownik podał poprawne dane to ustawiamy dla niego cookie.
$cookie = base64_encode(„$nick|$cpass”); |
Kodujemy dane użytkownika za pomocą powyższej funkcji.
setcookie(„user”, $cookie, time()+3600); echo”Przejdź do <A HREF=\”tajna.php\”>tajnej strony</A>”; } } ?> |
Jeśli wszystko zrobiliśmy zapisujemy plik pod nazwą login.php
Otwieramy ponownie edytor i wpisujemy:
if($_COOKIE[user]){ |
Sprawdzamy czy użytkownik jest zalogowany, jeśli tak to wyświetlamy komunikat, że dostał się do strefy chronionej.
echo”Dostałeś się do strefy chronionej<BR>”; $cookie = base64_decode($_COOKIE[user]); |
Odszyfrowujemy informacje o użytkowniku.
$data = explode(„|”, $cookie); echo”Twój nick: $data[0] <BR> Twoje hasło: $data[1]<BR>”; echo”<A HREF=\”logout.php\”>Wyloguj</A>”; }else{ echo”Przykro nam dostęp tylko dla zalogowanych”; } ?> |
Zapisujemy plik pod nazwą tajna.php
W edytorze wpisujemy kod który będzie kasował cookie.
setcookie(„user”,””); echo”Zostałeś wylogowany”; ?> |
i zapisujemy to pod nazwą logout.php
Teraz możemy zalogować się do systemu wpisując w polu login: Webinside, a w haśle: Krzasz. Spróbujmy nie wypełnić pól i wysłać formularz.