mihail02
Новичок
Socket and Authorization
function fetchURL( $url ) {
$url_parsed = parse_url($url);
$host = $url_parsed["host"];
$port = 80;
$path = $url_parsed["path"];
$out = "GET $path HTTP/1.0\r\nHost: $host\r\n\r\n";
$fp = fsockopen($host, $port, $errno, $errstr, 30);
fwrite($fp, $out);
$body = false;
while (!feof($fp)) {
$in.= fgets($fp, 128);
}
fclose($fp);
return $in;
}
echo fetchURL('http://www.mysite.com/price/');
В этой функции я сначала разбиваю URL страницы на составные части , открываю соединение с сокетом, формирую запрос к серверу и сервер мне возвращает код страницы, в качестве ответа.
Если папка "price" на сервере не защищена паролем то всё работает нормально .
Но если на папку поставить обычную авторизацию типа " WWW-Authenticate: Basic " то сервер возвращает сообщение Authorization Required .
В строке запроса
$out = "GET $path HTTP/1.0\r\nHost: $host\r\n\r\n";
нужно каким то образом передать пароль ...
Я попробовал несколько вариантов типа
$password=crypt("хххххх");
$newLine="Authorization: admin:".$password."\n";
$out = "GET $path HTTP/1.0\r\nHost: $host\r\n\r\n$newLine";
но результат один и тот же - Authorization Required
Вопрос: как правильно послать серверу логин и пароль ?
function fetchURL( $url ) {
$url_parsed = parse_url($url);
$host = $url_parsed["host"];
$port = 80;
$path = $url_parsed["path"];
$out = "GET $path HTTP/1.0\r\nHost: $host\r\n\r\n";
$fp = fsockopen($host, $port, $errno, $errstr, 30);
fwrite($fp, $out);
$body = false;
while (!feof($fp)) {
$in.= fgets($fp, 128);
}
fclose($fp);
return $in;
}
echo fetchURL('http://www.mysite.com/price/');
В этой функции я сначала разбиваю URL страницы на составные части , открываю соединение с сокетом, формирую запрос к серверу и сервер мне возвращает код страницы, в качестве ответа.
Если папка "price" на сервере не защищена паролем то всё работает нормально .
Но если на папку поставить обычную авторизацию типа " WWW-Authenticate: Basic " то сервер возвращает сообщение Authorization Required .
В строке запроса
$out = "GET $path HTTP/1.0\r\nHost: $host\r\n\r\n";
нужно каким то образом передать пароль ...
Я попробовал несколько вариантов типа
$password=crypt("хххххх");
$newLine="Authorization: admin:".$password."\n";
$out = "GET $path HTTP/1.0\r\nHost: $host\r\n\r\n$newLine";
но результат один и тот же - Authorization Required
Вопрос: как правильно послать серверу логин и пароль ?