ferdinand malcher

PHP auth against htaccess protection

I needed to authenticate against a .htaccess protected directory using PHP.
I needed it because I wanted to use LDAP login with PHP but couldn't access the LDAP server directly. I set up a protected directory using LDAP ressources on a web server and authenticated against it with this function.
To be frank, that is rather a workaround, but it was the only way to establish what I wanted to have.

<?php
function httpauth($host,$authurl,$ssl = 0, $user, $pass){
    if($ssl){
        $port = 443;
        $prefix = "ssl://";
    }else{
        $port = 80;
        $prefix = "";
    }

    $sock = fsockopen($prefix.$host, $port);
    fputs($sock, "HEAD ".$authurl." HTTP/1.0\r\n");
    fputs($sock, "Host: ".$host."\r\n");
    fputs($sock, "Authorization: Basic ".base64_encode($user.":".$pass)."\r\n");
    fputs($sock, "\r\n");
    $ret = trim(fgets($sock));
    fclose($sock);
    if($ret == "HTTP/1.1 200 OK") return true;
    else return false;
}


//USAGE:
if(httpauth("example.org","/protectedDir/index.html",1,"anyone","myPass")){
    echo "Authenticated!";
}else echo "Auth failed..."
?>

GitHub
Angular-Buch