[ Pobierz całość w formacie PDF ]
.htaccess.Jednak jeżeli witryna jest umieszczona nadzierżawionym serwerze, prawdopodobnie nie będziesz mógł zmienić plików konfiguracyjnych i zrestartowaćserwera WWW w celu pobrania zmienionej konfiguracji.Na wydruku 8.1 zamieszczony jest wydruk prostej strony HTML zawierającej łącze do podkatalogu zestroną administracyjną.Strona administracyjna znajduje się w katalogu wymagającym uwierzytelniania, więckliknięcie tego łącza spowoduje, że przeglądarka wyświetli standardowe okno uwierzytelniania, pokazane narysunku 8.1.Wydruk 8.2 zawiera dyrektywy konfiguracji Apache które powodują wyświetlenie okna logowania.Wydruk 8.1.Prosta strona HTML z łączem do stron administracyjnychProste uwierzytelnianie ApachePrzejdz do strony administratoraWydruk 8.2.Dyrektywy konfiguracji Apache włączające podstawowe uwierzytelnianieAuthUserFile /www/auth_usersAuthName AdminstrativeAuthType Basicrequire valid-userRysunek 8.1.Oknodialogoweuwierzytelniania wprzeglądarceWięcej informacji na temat użycia uwierzytelniania Apache można znalezć w Sieci oraz we wieluświetnych książkach poświęconych serwerowi Apache.Ten rodzaj uwierzytelniania wymaga współpracypomiędzy przeglądarką i serwerem.Mechanizm ten wygląda następująco: gdy użytkownik musi zostaćautoryzowany, serwer WWW wysyła żądanie 401 do przeglądarki a przeglądarka odpytuje użytkownika i odsyławprowadzone przez niego dane do serwera.Jeżeli serwer zaakceptuje uwierzytelnianie, chroniony zasób jestudostępniony użytkownikowi.Przeglądarka wysyła wprowadzone dane do serwera podczas żądania sprowadzeniawszystkich kolejnych stron aż do zakończenia pracy przeglądarki.PHP posiada zmienne globalne, których możesz użyć w aplikacji w celu odczytania danych autoryzacji.Możesz skorzystać ze zmiennych $PHP_AUTH_USER oraz $PHP_AUTH_PW do odczytania nazwy użytkownika i hasła.Wydruk 8.3 zawiera stronę wyświetlająca dane autoryzacji.Na rysunku 8.2.pokazana jest zawartość tej strony poprzejściu do niej poprzez łącze znajdujące się na stronie z wydruku 8.1.Wydruk 8.3.Wyświetlanie zawartości zmiennych autoryzacjiStrona administratoraWitamy na stronie administratoraRysunek 8.2.Zmienneautoryzacji w PHPSchemat autoryzacji Apache zapewnia podstawowy stopień bezpieczeństwa witryny.Jest on szczególnieużyteczny w sytuacjach, gdy chcesz chronić wszystkie strony i inne zasoby znajdujące się we fragmencie drzewaRozdział 8 Uwierzytelnianie96katalogów witryny.Ograniczeniem stosowania tej metody jest konieczność dodawania i usuwania użytkownikówpoprzez wykonanie odpowiednich poleceń na serwerze.W następnej części zostanie opisane w jaki sposób możnawykorzystać PHP do aktualizacji pliku haseł, co pozwoli na stworzenie narzędzia WWW do dodawania iusuwania użytkowników.Aktualizacja pliku.htaccess przy użyciu PHPJeżeli podstawowe uwierzytelnianie serwera WWW jest wystarczające w tworzonej aplikacji, można przyużyciu PHP stworzyć narzędzie administracyjne upraszczające zarządzanie użytkownikami.Można udostępnić tonarzędzie zaufanym osobom, którzy będą mogli operować użytkownikami bez konieczności udostępniania imbezpośredniego dostępu do serwera.Programiści zespołu The Webmasters Net (http://www.theWebmasters.net/) stworzyli dwie klasy służącedo zarządzania użytkownikami i grupami plików dla celów podstawowego uwierzytelniana.Do manipulacjistandardowym plikiem Apache htpasswd można wykorzystać klasę Htpasswd.Na wydruku 8.4 pokazany zostałprzykład, jak można wykorzystać tę klasę do autoryzacji użytkownika, przy użyciu bardzo małej ilości kodu.Przykład korzysta z tego samego pliku, który został użyty w poprzednim przykładzie.Wydruk 8.4.Sprawdzanie poprawności autoryzacji użytkownika za pomocą klasy HtpasswdSzybkie sprawdzenie użytkownika z uzyciem klasy HtpasswdEXISTS ){print( "Błąd autoryzacji" );}else{if ( $aHTPasswd->verifyuser( "phpbook", "phpbook" ) ){print( "phpbook to prawidłowy użytkownik" );}else{print( "phpbook nie jest prawidłowym użytkownikiem" );}}?>Klasę Htpasswd można również wykorzystać do dodawania nowych użytkowników, usuwaniaużytkowników, zmiany hasła, sprawdzania poprawności użytkownika oraz zmiany jego nazwy.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 [ Pobierz całość w formacie PDF ]
zanotowane.pl doc.pisz.pl pdf.pisz.pl odbijak.htw.pl
.htaccess.Jednak jeżeli witryna jest umieszczona nadzierżawionym serwerze, prawdopodobnie nie będziesz mógł zmienić plików konfiguracyjnych i zrestartowaćserwera WWW w celu pobrania zmienionej konfiguracji.Na wydruku 8.1 zamieszczony jest wydruk prostej strony HTML zawierającej łącze do podkatalogu zestroną administracyjną.Strona administracyjna znajduje się w katalogu wymagającym uwierzytelniania, więckliknięcie tego łącza spowoduje, że przeglądarka wyświetli standardowe okno uwierzytelniania, pokazane narysunku 8.1.Wydruk 8.2 zawiera dyrektywy konfiguracji Apache które powodują wyświetlenie okna logowania.Wydruk 8.1.Prosta strona HTML z łączem do stron administracyjnychProste uwierzytelnianie ApachePrzejdz do strony administratoraWydruk 8.2.Dyrektywy konfiguracji Apache włączające podstawowe uwierzytelnianieAuthUserFile /www/auth_usersAuthName AdminstrativeAuthType Basicrequire valid-userRysunek 8.1.Oknodialogoweuwierzytelniania wprzeglądarceWięcej informacji na temat użycia uwierzytelniania Apache można znalezć w Sieci oraz we wieluświetnych książkach poświęconych serwerowi Apache.Ten rodzaj uwierzytelniania wymaga współpracypomiędzy przeglądarką i serwerem.Mechanizm ten wygląda następująco: gdy użytkownik musi zostaćautoryzowany, serwer WWW wysyła żądanie 401 do przeglądarki a przeglądarka odpytuje użytkownika i odsyławprowadzone przez niego dane do serwera.Jeżeli serwer zaakceptuje uwierzytelnianie, chroniony zasób jestudostępniony użytkownikowi.Przeglądarka wysyła wprowadzone dane do serwera podczas żądania sprowadzeniawszystkich kolejnych stron aż do zakończenia pracy przeglądarki.PHP posiada zmienne globalne, których możesz użyć w aplikacji w celu odczytania danych autoryzacji.Możesz skorzystać ze zmiennych $PHP_AUTH_USER oraz $PHP_AUTH_PW do odczytania nazwy użytkownika i hasła.Wydruk 8.3 zawiera stronę wyświetlająca dane autoryzacji.Na rysunku 8.2.pokazana jest zawartość tej strony poprzejściu do niej poprzez łącze znajdujące się na stronie z wydruku 8.1.Wydruk 8.3.Wyświetlanie zawartości zmiennych autoryzacjiStrona administratoraWitamy na stronie administratoraRysunek 8.2.Zmienneautoryzacji w PHPSchemat autoryzacji Apache zapewnia podstawowy stopień bezpieczeństwa witryny.Jest on szczególnieużyteczny w sytuacjach, gdy chcesz chronić wszystkie strony i inne zasoby znajdujące się we fragmencie drzewaRozdział 8 Uwierzytelnianie96katalogów witryny.Ograniczeniem stosowania tej metody jest konieczność dodawania i usuwania użytkownikówpoprzez wykonanie odpowiednich poleceń na serwerze.W następnej części zostanie opisane w jaki sposób możnawykorzystać PHP do aktualizacji pliku haseł, co pozwoli na stworzenie narzędzia WWW do dodawania iusuwania użytkowników.Aktualizacja pliku.htaccess przy użyciu PHPJeżeli podstawowe uwierzytelnianie serwera WWW jest wystarczające w tworzonej aplikacji, można przyużyciu PHP stworzyć narzędzie administracyjne upraszczające zarządzanie użytkownikami.Można udostępnić tonarzędzie zaufanym osobom, którzy będą mogli operować użytkownikami bez konieczności udostępniania imbezpośredniego dostępu do serwera.Programiści zespołu The Webmasters Net (http://www.theWebmasters.net/) stworzyli dwie klasy służącedo zarządzania użytkownikami i grupami plików dla celów podstawowego uwierzytelniana.Do manipulacjistandardowym plikiem Apache htpasswd można wykorzystać klasę Htpasswd.Na wydruku 8.4 pokazany zostałprzykład, jak można wykorzystać tę klasę do autoryzacji użytkownika, przy użyciu bardzo małej ilości kodu.Przykład korzysta z tego samego pliku, który został użyty w poprzednim przykładzie.Wydruk 8.4.Sprawdzanie poprawności autoryzacji użytkownika za pomocą klasy HtpasswdSzybkie sprawdzenie użytkownika z uzyciem klasy HtpasswdEXISTS ){print( "Błąd autoryzacji" );}else{if ( $aHTPasswd->verifyuser( "phpbook", "phpbook" ) ){print( "phpbook to prawidłowy użytkownik" );}else{print( "phpbook nie jest prawidłowym użytkownikiem" );}}?>Klasę Htpasswd można również wykorzystać do dodawania nowych użytkowników, usuwaniaużytkowników, zmiany hasła, sprawdzania poprawności użytkownika oraz zmiany jego nazwy.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 [ Pobierz całość w formacie PDF ]