Page 180 - 4636
P. 180

своїми наборами імен користувачів і паролів. Іменовані зони дозволяють також згрупувати в одну зону
        кілька каталогів на одному фізичному або віртуальному хості й захистити їх одним паролем.

              Використання базової аутентифікації в РНР
              У  загальному  випадку  Php-Сценарії  є  міжплатформовими,  але  в  основі  використання  базової
        аутентифікації  лежать  змінні  середовища,  установлювані  сервером.  Сценарій  Нтгр-Аутентифікації
        повинен визначати тип сервера й поводитися відповідним чином залежно від того, виконується він як
        модуль Apache на сервері Apache або як Isapi-Модуль на сервері IIS. Показаний у лістингу 9.4 сценарій
        буде виконуватися на обох серверах.
              Лістинг 10.4. http.php — базову Http-Аутентифікацію можна включити засобами PHF
           <?php
           // Якщо використовується сервер IIS, буде потрібно встановити змінні //
           $_SERVER['PHP_AUTH_USER']  і $_SERVER['PHP_AUTH_PW']
           if ( (Substr($_SERVER['$SERVER_Software'h 0, 9) == 'Microsoft') SS
           (!isset($_SERVER['$PHP_AUTH_USER'])) S&
           (!isset($_SERVER['$PHP_AUTH_PW']))   is
           (substr($_Serverl'$HTTP_AUTHORIZATION'), 0, 6) — 'Basic ') ) I
           list($_SERVERI'$PHP_AUTHJJSER'J,   S_SERVER['$PHP_AUTH_PW]) =
           explode(':', base64_decode(substr<$_SERVER['SHTTPAUTHORIZATION'], 6)) )
           ; I

           // Заміните цей оператор if запитом до бази даних або чимсь подібним if
           ($_SERVEP.['$PHP_AUTH_USER'] != 'user' || ($_SERVER['$PHP_AUTH_PW'I
           !='pass')) (
           // Відвідувач ще не надав інформацію,
           // або його ім'я й пароль невірні
           header('Www-Authenticate: Basic realm="Realm-Name"');
           if (substr(S_SERVER['$SERVER_SOFTWARE'], 0, 9) == 'Microsoft') (
           header('Status: 401 Unauthorized'); ) else I
           header('HTTP/1.0 401 Unauthorized');
           echo "<hl>Kbb2 отсела !</hl>"   .
           "<р>Вам не дозволено переглядати даний ресурс</р>"; :  else  i
           Відвідувач надав коректну інформацію echo "<hl>Bbi на місці !</hl>"  .
           "<р>Ви напевно щасливі переглянути цю секретну сторінку</р>"; I

              Код у лістингу 10.4 працює так само, як і код з попередніх лістингів цієї лекції. Якщо користувач
        не  передав  дані  аутентифікації,  йому  буде  видано  запит.  Якщо  користувач  надав  неправильну
        інформацію, для нього відображається повідомлення про відмову в доступі. Якщо ж користувач надав
        відповідну пару " імена-пароль", він побачить уміст сторінки.
              Інтерфейс  даного  прикладу  трохи  відрізняється  від  інтерфейсу  попередніх  прикладів.  Ми  не
        створюємо  Html-Форму  для  введення  імені  й  пароля.  Діалогове  вікно  для  аутентифікації  виведе
        браузер  користувача.  Деякі  вважають  це  поліпшенням,  інші  воліють  мати  повний  контроль  над
        візуальними аспектами інтерфейсу. На рис. 10.4 показане діалогове вікно входу, яке виводить браузер
        Internet Explorer.
              Internet  Explorer  надає  користувачеві  три  спроби  для  аутентифікації,  а  потім  виводить
        повідомлення про відмову в доступі.












                                                            177
   175   176   177   178   179   180   181   182   183   184   185