Na początku będziemy potrzebowali zbioru użytecznych funkcji (plik [func.php]). Do tych najbardziej potrzebnych zaliczają się:
login($login, $passwd) - logowanie użytkownika
logout() - wylogowanie użytkownika
auth() - sprawdza czy użytkownik jest zalogowany
user_exists($login) - sprawdza czy użytkownik istnieje już w naszej bazie (plik [users.dat])
add_user($login, $passwd) - rejestruje nowego użytkownika, dodaje wpis do pliku [users.dat]
<?php #definicje stalych # zaloguj user-a function login($login, $passwd) { foreach($line as $temp) { { $_SESSION[\"USER_AUTH\"] = True; $_SESSION[\"USER_LOGIN\"] = $_POST[\"login\"]; return True; } } return False; } # wyloguj user-a function logout() { $_SESSION[\"USER_AUTH\"] = False; $_SESSION[\"USER_LOGIN\"] = Null; } # czy użytkownik istnieje function user_exists($login) { foreach($line as $temp) { } return False; } # dodaje nowego użytkownika function add_user($login, $passwd) { } # sprawdz czy zalogowany function auth() { return ($_SESSION[\"USER_AUTH\"] == True); } ?>
Stała DATA definiuje ścieżkę dostępu do pliku z hasłami, plik ten powinien znajdować się w katalogu niedostępnym dla zwykłego zjadacza chleba np. może to być katalog PRIVATE lub, tak jak u mnie, nad katalogiem PUBLIC_HTML. W ostateczności możesz go zapisać w katalogu razem z resztą plików, hasła są kodowane więc ewentualny podgląd pliku niewiele komuś pomoże. Jeśli zajdzie taka potrzeba, należy ustawić prawa dostępu do pliku "users.dat" na 644. Najbardziej sympatyczna jest funkcja auth(), dzięki której wiadomo czy ktoś jest zalogowany czy nie. Funkcja logout() natomiast powoduje wylogowanie użytkownika.
Te dziwnie wyglądające napisy $_SESSION[*] to nic innego jak zmienne sesyjne, które są dostępne przez cały czas trwania sesji. $_SESSION["USER_LOGIN"] zawiera nazwę użytkownika, a $_SESSION["USER_AUTH"] mówi nam czy użytkownik jest zalogowany czy też nie (true, false).
Następne funkcje służą odpowiednio do: sprawdzenia czy użytkownik istnieje w bazie i dodawania nowego użytkownika.
W nagłówku pliku "index.php" (na samym początku) należy umieścić skrypt, który w odpowiednim momencie wywoływałby te funkcje. Oprócz tego powinien załadować bibliotekę z funkcjami i startować sesję. Tak wygląda ten skrypt: [plik: session.php]
<?php # start sesji # biblioteka z funkcjiami include \"func.php\"; # logowanie, wylogowanie itp switch ($page) { case \"login\" : break; case \"logout\" : logout(); break; } ?>
Jak widać skrypt ten wywołuje odpowiednie funkcje w zależności od zawartości zmiennej $page.
Zmienna ta zawiera nazwę pliku (bez rozszerzenia) która ma być dołączona w prawej komórce tabeli (plik: "index.php"). Przed dołączeniem zostaje dodane rozszerzenie ".php". Przykładowy link wygląda następująco: <a href="index.php?page=nazwa_pliku"></a>. Formularz także musi przypisać jakoś wartość zmiennej $page w przeciwnym razie nie można byłoby wywołać odpowiednich funkcji.
Formularz [plik: login.frm]
Kod
<form action="index.php" method="post">
<input type="hidden" name="page" value="login">
<input type="hidden" name="<?=SESSION_NAME()?>" value="<?=SESSION_ID()?>">
Login<br>
<input type="text" name="login" value="<?=$_POST["login"]?>">
<br>
Haslo<br>
<input type="password" name="passwd" value="">
<input type="submit" name="submit" value="Loguj">
</form>
<input type="hidden" name="page" value="login">
<input type="hidden" name="<?=SESSION_NAME()?>" value="<?=SESSION_ID()?>">
Login<br>
<input type="text" name="login" value="<?=$_POST["login"]?>">
<br>
Haslo<br>
<input type="password" name="passwd" value="">
<input type="submit" name="submit" value="Loguj">
</form>
Mając te wszystkie funkcje jesteśmy w stanie zrobić już prawie wszystko co jest związane z logowaniem i rejestracją użytkownika.
Aby wyświetlić dowolny tekst dla użytkownika tylko zalogowanego wystarczy użyć funkcji auth(). Np:
<?php ?> $_SESSION[\"USER_LOGIN\"] zwraca nazwę zalogowanego użytkownika.
Logowanie też wygląda prosto:
login(jakiś_login, md5(hasło)) gdzie funkcja md5() koduje hasło, następnie funkcja poszukuje użytkownika w pliku [users.dat]. Jeśli użytkownik istnieje i hasło jest poprawne funkcja zwraca True. Należy zaznaczyć, że funkcja login() nie służy nam do sprawdzania czy użytkownik jest zalogowany, do tego celu służy funkcja auth().
Udostępniłem też możliwość rejestracji nowych użytkowników. Funkcja add_users(login, hasło) dodaje nowego użytkownika konta, a funkcja user_exists(login) sprawdza czy przypadkiem przyszły użytkownik nie znajduje się w naszej bazie.
Plik do rejestracji [registration.php] wygląda następująco:
<?php $result = False; if($submit) { if(!$login || !$passwd) { } { } { } elseif(user_exists($login)) { } else { $result = True; // formatuje wprowadzone dane // informacjie o nowym koncie } } if(!$result) { // usuwa tagi html z formularza include \"registration.frm\"; } ?>
prosze o opmoc bo niewiem o co z tym chodzi ... a skrypt jest ze strony webhelp.pl