Dec 25

Во многих статьях и книгах описан принцип HTTP авторизации в PHP, поэтому здесь я не буду его описывать. Общеизвестен и факт, что переменные $_SERVER['PHP_AUTH_USER'] и $_SERVER['PHP_AUTH_PW'] создаются лишь при использовании php как модуля для сервера Apache.
В этом небольшом топике я опишу как добиться кроссплатформенности HTTP авторизации как в модульной версии php, так и в cgi.

Сперва в папку со скриптом необходимо поместить файл .htaccess со следующим содержимым:

RewriteEngine on RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization},L]

Это позволит записывать пару login/password в переменную окружения, названную HTTP_AUTHORIZATION.

Затем добавим в наш скрипт строчки:

if(isset($_SERVER['HTTP_AUTHORIZATION']))
    list($_SERVER['PHP_AUTH_USER'], $_SERVER['PHP_AUTH_PW']) = explode(':' , base64_decode(substr($_SERVER['HTTP_AUTHORIZATION'], 6)));

Оригинал статьи здесь.

Написал [YS.PRO] :: тэги: , , , , , ,