skanuj0207 (4)

skanuj0207 (4)



Rozdział 7. ♦ System plików 219

1.    Logowanie zakończyło się sukcesem — funkcja zwraca wartość 0, wczytywany jest plik indexl.html zawierający właściwą wersję witryny;

2.    Wystąpił błąd serwera (np. nie udało się otworzyć pliku z hasłami) — funkcja zwraca wartość 1, wczytywany jest plik error_server.html zawierający informację o błędzie;

3.    Logowanie zakończyło się niepowodzeniem, gdyż wprowadzone dane były błędne — funkcja zwraca wartość 2, wczytywany jest plik bad_login.html zawierający informację o błędzie logowania.

Nazwy użytkowników i hasła będą przechowywane w pliku passwords.txt. W każdej linii znajdować się będzie jedna nazwa użytkownika i jedno hasło oddzielone od siebie znakiem dwukropka4, schematycznie:

nazwa jjżytkown ika:haslo

Kod funkcji checkPass rozpoczyna się od próby otwarcia plikupasswords.txt w trybie do odczytu. Jeśli otwarcie się nie powiedzie, funkcja zwraca wartość 2. Następnie zmiennej pomocniczej resul t przypisywana jest wartość 2 (wartość tej zmiennej stanie się ostatecznie wartością zwracaną przez funkcję) oraz rozpoczyna się pętla while odczytująca kolejne wiersze z pliku. Każdy odczytany ciąg znaków dzielony jest za pomocą funkcji explode (por. rozdział 6., sekcja „Przetwarzanie ciągów”) na dwie części względem znaku dwukropka. Efekt działania funkcji expl ode jest zapisywany w tablicy arr. W ten sposób w komórce o indeksie 0 znajdzie się odczytana nazwa użytkownika, a w komórce o indeksie 1 — odczytane hasło użytkownika. W przypadku gdyby liczba komórek tablicy była mniejsza niż 2, co oznaczałoby, że odczytany z pliku wiersz ma niepoprawny format, jest wykonywana kolejna iteracja pętli.

Zawartość komórki o indeksie zero jest porównywana z parametrem user, zawierającym nazwę użytkownika otrzymaną z formularza logowania. Jeżeli wartości te są różne, wykonywana jest kolejna iteracją pętli, czyli odczytywany jest kolejny wiersz tekstu. Jeśli jednak nazwy są zgodne, zawartość komórki o indeksie 1 jest porównywana z parametrem pass zawierającym hasło użytkownika otrzymane z formularza logowania. Jeżeli występuje zgodność, czyli jeśli i nazwa, i hasło są poprawne, zmiennej resul t przypisywana jest wartość 0 i pętla jest przerywana. Jeśli natomiast hasło okaże się niepoprawne, pętla również jest przerywana, ale zmienna resul t pozostaje równa 2! Po zakończeniu pętli plikpasswords.txt jest zamykany za pomocą instrukcji fclose, a wartość zmiennej resul t jest zwracana jako rezultat działania funkcji checkPass. Tym samym jeśli weryfikacja danych powiodła się, czyli i nazwa i hasło użytkownika były poprawne, funkcja zwróci wartość 0. Jeśli natomiast weryfikacja zakończyła się niepowodzeniem, funkcja zwróci wartość 2.

Generowanie listy odnośników

Nieodłącznym elementem wielu stron WWW jest lista odnośników do innych witryn. Taka lista często tworzona jest statycznie przez ręczne wpisanie do kodu HTML znaczników <a>. Jeśli zastosujemy PHP, będziemy mogli pokusić się o zautomatyzowanie tej

Należy zwrócić uwagę, że wyklucza to zastosowanie znaku dwukropka zarówno w hasłach, jak i nazwach użytkowników.


Wyszukiwarka

Podobne podstrony:
skanuj0185 (7) Rozdział 7. ♦ System plików 197 Tabela 7.1. Wartości parametru tryb funkcji fopen Try
13349 skanuj0191 (5) Rozdział 7. ♦ System plików 203 Jeszcze prostsze jest użycie funkcji readfile l


więcej podobnych podstron