$value)
{
$authorization.=$sep." {$name}=\"".$value."\"";
$sep=",";
}
//make the request again
$headers=getHttpResponseHeaders($host, $uri, array('Authorization'=>$authorization));
if ($headers['_statuscode']==200)
{
echo "Request succeeded - digest authentication worked
";
}
else
{
echo "Request failed - digest authentication broken
";
var_dump($headers);
}
exit;
/**
* Makes HTTP request with optional headers and returns
* array of response headers
*/
function getHttpResponseHeaders($host, $uri='/', $headers=array())
{
$fp = fsockopen($host, 80, $errno, $errstr, 30);
if (!$fp) {
die("$errstr ($errno)");
} else {
$http="GET $uri HTTP/1.1\r\n";
foreach($headers as $name=>$value){
$http.="$name:$value\r\n";
}
$http.="Host:$host\r\n";
$http.="Connection: Close:$host\r\n";
$http.="\r\n";
fwrite($fp, $http);
$lines=0;
while (!feof($fp)) {
$lines++;
$header=trim(fgets($fp, 8192));
if (empty($header))
break;
if ($lines>1)
{
list($name,$value)=explode(':',$header);
$headers[$name]=trim($value);
}
else
{
list($protocol, $status, $msg)=explode(' ',$header,3);
$headers['_protocol']=$protocol;
$headers['_statuscode']=$status;
$headers['_statusmsgmsg']=$msg;
}
}
fclose($fp);
}
return $headers;
}
?>