[ Pobierz całość w formacie PDF ]
.Przy pomocy tejklasy można napisać obszerne narzędzie do administracji użytkownikami, które będzie pomocne przy zarządzaniumechanizmem podstawowego uwierzytelniania serwera.Skrypty na wydruku 8.5, 8.6 i 8.7 zawierają skryptypokazujące, w jaki sposób można połączyć wszystkie te operacje w jednym formularzu.Wydruk 8.5 zawiera pierwszą część skryptu.Jest ona używana do inicjalizacji skryptu i określenia czystrona jest oglądana pierwszy raz, czy została wywołana w wyniku żądania POST.Skrypt ten jest podobny dowielu przytoczonych do tej pory przykładów, które przesyłają dane do samego siebie i są używane zarówno dowyświetlania jak i do zmiany danych.Wydruk 8.5.Użycie klasy Htaccess do zarządzania użytkownikamiEXISTS ){print( "Błąd krytyczny" );exit;}if ( $REQUEST_METHOD == 'POST' ){switch ( $acttype ){PHP Kompendium wiedzy97 case 'none' :break;case 'add' :$aHTPasswd->addUser( $NewUserName, $NewUserPass );print( "Dodano użytkownika $NewUserName" );break;case 'delete' :$aUserName = $aHTPasswd->USERS[$CurUserRow]["user"];$aHTPasswd->deleteUser( $aUserName );print( "Usunięto użytkownika $aUserName" );break;case 'rename' :$aUserName = $aHTPasswd->USERS[$CurUserRow]["user"];$aHTPasswd->renameUser( $aUserName, $RenameName );print( "Nazwa użytkownika zmieniona z $aUserNamena $RenameName" );break;case 'changepass' :$aUserName = $aHTPasswd->USERS[$CurUserRow]["user"];$aHTPasswd->changePass( $aUserName, $ChangePass );print( "Zmieniono hasło dla użytkownika $aUserName" );break;}}?>Jeżeli skrypt ten zostanie wywołany w wyniku żądania POST, na podstawie wartości zmiennej formularza$acttype podejmowana jest decyzja co do kolejnej akcji.Zmienna posiada pięć możliwych wartości: none, add,delete, rename oraz changepass.W zależności od wyboru użytkownika podejmowana jest odpowiednia akcja.Wskrypcie założono, że wszystkie potrzebne dane są prawidłowo wypełnione.Oczywiście, aby program mógł byćnormalnie używany niezbędne jest dodanie kodu kontroli poprawności.W następnej części skryptu ustawiana jest zmienna $acttype.Dla wszystkich przycisków znajdujących sięna formularzu zdefiniowana jest odpowiednia akcja.Do ustawiania ukrytej zmiennej formularza $acttypewykorzystujemy JavaScript.Wydruk 8.6.Ustawianie zmiennej $acttypeProsty program zarządający użytkownikamiOstatnia część skryptu pokazana na wydruku 8.7 jest po prostu stroną HTML zawierającą formularz.KodPHP jest jedynie używany do wstawiania istniejących użytkowników do listy SELECT.Każdy przycisk naformularzu zawiera atrybut onClick, który powoduje wywołanie przedstawionej funkcji JavaScript, która realizujewysłanie danych formularza do odpowiedniej strony.Wydruk 8.7.Strona z formularzem HTMLProsty program zarządzający użytkownikamiDodanie użytkownikaNazwa nowego użytkownika:Hasło:Zmiana użytkownikaUSERS as $aUser ){print( "$aUser[user]" );$nIndex++;}?>Rozdział 8 Uwierzytelnianie98Usunięcie zaznaczonego użytkownika:Zmiana nazwy zaznaczonego użytkownika:Zmiana hasła dla zaznaczonego użytkownika:Na rysunku 8.3.pokazana jest strona bezpośrednio o dodaniu użytkownika scott.Jak mówiliśmywcześniej, skrypt ten nie jest kompletnym narzędziem zarządzającym użytkownikami, a jedynie pokazuje sposóbwykorzystania klasy Htpasswd.Można również skorzystać z dostarczanej przez The Webmasters Net klasyHtgroup do tworzenia i zarządzania grupami użytkowników.Rysunek 8.3.Programzarządzającyużytkownikamiw działaniuPodstawowe uwierzytelnianie za pomocą PHPPoprzednie dwie części opisywały podstawowe uwierzytelnianie serwera Apache do ochrony fragmentówwitryny WWW (zwykle katalogów).W niektórych przypadkach może być wymagane zabezpieczenie tylkoniektórych stron aplikacji lub nie jest możliwa modyfikacja odpowiednich plików na serwerze WWW.W takimprzypadku możesz wykorzystać PHP do wysyłania odpowiednich nagłówków do serwera i w ten sposóbbezpośrednio żądać autoryzacji.PHP Kompendium wiedzy99Tak jak w przypadku wysyłania innych danych nagłówka, należy albo wysyłać dane nagłówków przedwysłaniem jakichkolwiek danych strony, albo korzystać z buforowania wyjścia.Na wydruku 8.8 zamieszczonyjest prosty skrypt żądający autoryzacji.Skrypt ten jest w postaci pliku dołączanego, auth_include.inc, więc będziego można łatwo dodawać do wszystkich stron wymagających autoryzacji.Wydruk 8.8.Skrypt auth_include.phpSkrypt ten na początku pracy sprawdza, czy ustawiona jest zmienna $PHP_AUTH_USER.Jeżeli tak, towartości zmiennych $PHP_AUTH_USER i $PHP_AUTH_PW są porównywane z prawidłową nazwą użytkownika i hasłemaplikacji.Jeżeli sprawdzenie to się powiedzie, nie ma potrzeby wysyłania do przeglądarki nagłówka autoryzacji.Jeżeli porównanie nie uda się skrypt wysyła do przeglądarki nagłówek HTTP 401, który powoduje wyświetlenieokna autoryzacji.Proces ten jest powtarzany aż do podania właściwych danych autoryzacji, albo do przerwaniauwierzytelniania przez użytkownika.Dołączenie tego pliku na początku dowolnego skryptu powodujekonieczność autoryzacji użytkownika skryptu.Prawdziwy system uwierzytelniania nie powinien mieć zaszytych nazw użytkowników i haseł w samymskrypcie.Zamiast tego należy wykorzystać bazę danych lub usługę katalogową (na przykład LDAP) lub nawetpliki zawierające dane uwierzytelniania
[ Pobierz całość w formacie PDF ]