Uwierzytelnianie HTTP za pomocą skryptu PHP - środowisko CGI

W usługach, w których PHP realizowane jest jako moduł CGI nie ma możliwości uwierzytelniania HTTP. W celu rozwiązania tego problemu należy postępować zgodnie z poniższymi krokami:

  1. dodanie dyrektywy mod_rewrite do .htaccess

    RewriteEngine on
    RewriteCond %{HTTP:Authorization} ^(.*)
    RewriteRule ^(.*) - [E=HTTP_AUTHORIZATION:%1]

  2. zmienić skrypt PHP:
     

    <?php
    if ($_SERVER["HTTP_AUTHORIZATION"] != "") {
       $ha = base64_decode( substr($_SERVER["HTTP_AUTHORIZATION"],6) );
       list($_SERVER["PHP_AUTH_USER"], $_SERVER["PHP_AUTH_PW"]) = explode(":", $ha);
       unset($ha);
    }
    if (!isset($_SERVER["PHP_AUTH_USER"])) {
        header("WWW-Authenticate: Basic realm="My Realm"");
        header("HTTP/1.0 401 Unauthorized");
        echo "Tekst po wciśnięciu anuluj";
        exit;
    }
    ?>