Socket and Authorization

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

Вопрос: как правильно послать серверу логин и пароль ?
 

Tor

Новичок
молодой человек
Вам читать не перечитать

1) правила форума http://phpclub.ru/talk/announcement.php?s=&forumid=12

2) Ничего не работает! Что делать??? (в частности про обмен заголовками)
http://phpfaq.ru/debug
 

mihail02

Новичок
Да забыл добавить -
Параметры системы такие -
Server: Apache/1.3.29 (Unix) mod_ssl/2.8.16 OpenSSL/0.9.7d PHP/4.3.6
WWW-Authenticate: Basic

Но вопрос был как в общем виде составить запрос к серверу , для отправки, через сокет, логина и пароля при типе авторизации WWW-Authenticate: Basic .

-~{}~ 04.10.05 13:10:

Нашел решение, все очень просто -

$out="GET ".$path." HTTP/1.1\r\nHost: ".$host."\r\nAuthorization: Basic ".base64_encode("admin:xxxx")."\n\n";
 
Сверху