HTTP Auth via PHP - PHP_AUTH_USER not set?

后端 未结 3 989

I tried to implement a small authentication via http and copied this bit of code from the net to check whether this will work properly:



        
相关标签:
3条回答
  • 2020-12-06 03:24

    For PHP-CGI:

    in .htaccess add this:

    <IfModule mod_rewrite.c>
    RewriteEngine on
    RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization},L]
    </IfModule>
    

    and at the beginning of your script add this:

    list($_SERVER['PHP_AUTH_USER'], $_SERVER['PHP_AUTH_PW']) = explode(':' , base64_decode(substr($_SERVER['HTTP_AUTHORIZATION'], 6)));
    
    0 讨论(0)
  • 2020-12-06 03:25

    Enable PHP-FPM and it will start working.

    $valid_passwords = array ("test" => "test");
    $valid_users = array_keys($valid_passwords);
    
    $user = $_SERVER['PHP_AUTH_USER'];
    $pass = $_SERVER['PHP_AUTH_PW'];
    
    $validated = (in_array($user, $valid_users)) && ($pass == $valid_passwords[$user]);
    
    if (!$validated) {
        header('WWW-Authenticate: Basic realm="Test"');
        header('HTTP/1.0 401 Unauthorized');
        die ("Not authorized");
    }
    
    0 讨论(0)
  • 2020-12-06 03:37

    Run phpinfo(). if "Server API" is CGI/FCGI, you can pretty much forget it as there is no sensible way to use HTTP auth from PHP.

    0 讨论(0)
提交回复
热议问题