19

How can I access the apache basic-auth username in a PHP script?

Ben
  • 66,838
  • 37
  • 84
  • 108

4 Answers4

19

Simply access this variable:

$_SERVER['PHP_AUTH_USER']
William Entriken
  • 37,208
  • 23
  • 149
  • 195
3

Check what you have in $_SERVER (print_r($_SERVER)), sometimes $_SERVER['PHP_AUTH_USER'] is not available.

If you have value for $_SERVER["HTTP_AUTHORIZATION"], you may use:

if (isset($_SERVER["HTTP_AUTHORIZATION"]) {
        $auth = $_SERVER["HTTP_AUTHORIZATION"];
        $auth_array = explode(" ", $auth);
        $un_pw = explode(":", base64_decode($auth_array[1]));
        $un = $un_pw[0];
        $pw = $un_pw[1];
    }

(copied from https://www.codepunker.com/blog/php-a-primer-on-the-basic-authorization-header)

3

It would seem that the location depends on the server in use:

  • $_SERVER["REMOTE_USER"] - CGI standard
  • $_SERVER["PHP_AUTH_USER"] - APACHE
  • $_SERVER["AUTH_USER"] - IIS
domsson
  • 4,553
  • 2
  • 22
  • 40
1

At my clients hoster $_SERVER['PHP_AUTH_USER'] and $_SERVER["HTTP_AUTHORIZATION"] were empty but $_SERVER["REMOTE_USER"] was set!

if ($_SERVER["REMOTE_USER"] == "admin")
    echo "Welcome, admin!";
else
    echo "Access denied";
Phil
  • 422
  • 1
  • 5
  • 20