$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; } ?>