cURL基本身份验证

时间:2011-04-02 16:59:32

标签: php html get

我正在尝试使用

从远程服务器访问文件
$fp = @fsockopen($ip,$port,$errno,$errstr,1);    
fputs($fp, "GET /randomfiletoget.html HTTP/1.0\r\nUser-Agent: Mozilla\r\n\r\n");

但服务器需要HTML身份验证。 我应该如何传递登录名/密码才能访问该文件?

谢谢!

3 个答案:

答案 0 :(得分:5)

对潜在的downvoters,我故意写了authentification。将Host更改为您的域名。它应该使用有效的用户名和密码返回HTML输出。

function authentification($url, $username, $password){
    $headers = array(
    "Host=example.com",
    "User-Agent=Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2.11) Gecko/20101012 Firefox/3.6.11",
    "Accept=text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8",
    "Accept-Language=en-us,en;q=0.5",
    "Accept-Encoding=gzip,deflate",
    "Accept-Charset=ISO-8859-1,utf-8;q=0.7,*;q=0.7",
    "Date: ".date(DATE_RFC822)
    );

    $curl = curl_init($url);
    curl_setopt($curl, CURLOPT_HTTPAUTH, CURLAUTH_ANY);
    curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1);
    curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0);
    curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 0);
    curl_setopt($curl, CURLOPT_USERPWD, "$username:$password");
    return curl_exec($curl);
}

答案 1 :(得分:0)

正如webarto在评论中提到的,你应该研究cURL,它支持许多其他方便功能中的基本HTTP身份验证。

答案 2 :(得分:0)

首先,您也应该使用主机标头。今天的托管环境需要99%。

使用标头和Base64编码完成基本的http身份验证。这wikipedia article会告诉你什么。或者使用PHP's cURL functions