我正在尝试使用
从远程服务器访问文件$fp = @fsockopen($ip,$port,$errno,$errstr,1);
fputs($fp, "GET /randomfiletoget.html HTTP/1.0\r\nUser-Agent: Mozilla\r\n\r\n");
但服务器需要HTML身份验证。 我应该如何传递登录名/密码才能访问该文件?
谢谢!
答案 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。