Page 80 - 4475
P. 80

можливості  аутентифікації,  вбудовані  в  HTTP-Протокол
               (Hypertext   Transfer    Protocol   -   протокол     передачі
               гіпертекстів).  Сценарії  й  Web-Сервери  можуть  запитувати
               аутентифікацію  у  Web-Браузера.  Після  цього Web-Браузер
               повинен вивести на екран діалогове вікно або щось подібне
               й  запросити  в  користувача  необхідну  інформацію.  Хоча
               Web-Сервер  запитує  нові  деталі  аутентифікації  в  кожному
               запиті  користувача,  Web-браузеру  немає  необхідності
               запитувати  цю  інформацію  для  кожної  сторінки.  У
               загальному випадку браузер зберігає деталі аутентифікації,
               поки відкрито вікно браузера,  і автоматично відправляє  їх
               без втручання з боку користувача.
                      Описана  можливість  HTTP-протоколу  називається
               базовою  аутентифікацією.  Базову  аутентифікацію  можна
               включити засобами Web-сервера.
               <?php
               // якщо використовується IIS, потрібно встановити
               змінні
               // $_SERVER['PHP_AUTH_USER'] і
               $_SERVER['PHP_AUTH_PW']
               if ((substr($_SERVER['$SERVER_SOFTWARE'], 0, 9) ==
               'Microsoft') &&
                   (!isset($_SERVER['$PHP_AUTH_USER'])) &&
                   (!isset($_SERVER['$PHP_AUTH_PW'])) &&
                   (substr($_SERVER['$HTTP_AUTHORIZATION'], 0, 6)
               == 'Basic ')
                  ) {
                 list($_SERVER['$PHP_AUTH_USER'],
               $_SERVER['$PHP_AUTH_PW']) =
                   explode(':',
               base64_decode(substr($_SERVER['$HTTP_AUTHORIZATION'
               ], 6)));
               }
               // Замініть цей оператор запитом до бази даних або
               чимось подібним
               if ($_SERVER['$PHP_AUTH_USER'] != 'user' ||
                  ($_SERVER['$PHP_AUTH_PW'] != 'pass')) {
                 // Користувач не надав інформацію,
                 // або вона неправильна
                 header('WWW-Authenticate: Basic realm="Realm-
                                            75
   75   76   77   78   79   80   81   82   83   84   85