Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Сеть > Авторизация скриптом на удаленном сайте


Автор: Comandante 7.6.2006, 20:01
Есть сайт, на котором реализована HTTP-аутентификация - когда юзер туда заходит - выскакивает окно, к которое он вводит логин и пароль и жмет "ОК". Вот пример http://euro-cc.ru/admin
Задача: с удаленного сайта авторизоваться скриптом на таком сайте и скачать несколько страниц. Какие запросы делать, какие переменные отправлять на тот адрес, чтобы авторизоваться? 

Автор: Mal Hack 7.6.2006, 23:34
Вот тебе ссылочка на реализацию (механизм): http://php.net/curl 

Автор: Comandante 7.6.2006, 23:42
Все проще оказалось, нужно этот адрес открывать так http://login:[email protected]  

Автор: vpokorp 12.1.2008, 15:08
Цитата(Mal Hack @ 7.6.2006,  23:34)
Вот тебе ссылочка на реализацию (механизм): http://php.net/curl

Потрясает снобизм некоторых МУДРЫХ
Еще бы ссылочку на ПСС Ленина дали - там можно отыскать фрау - Учиться, учиться и учиться - ну а дальше и так понятно.

Для полного понятия механизмов работы курла нужен далеко не один день кропотливых занятий - и приведенная ссылка - не лучший вариант для этого.
Вот только нужно ли это всем, кто спрашивает здесь в качестве новичка?

А на приличных форумах за такие ответы можно и бан получить.

Вопрос кстати остался без ответа - т.к. вариант автора - лишь частный случай...

Автор: maykoff 12.1.2008, 16:45
Всё просто, вот кусок кода:
Код

$user = 'xxxxx';
$pass = 'xxxxx';
$url  = 'xxxx.com';
$path = '/xxx/xxx.php';
//далее - отправляемые данные - не принципиально какие, можно вообще ничего не слать
$data = <<<QUERY
<?xml version="1.0" encoding="UTF-8"?>
<message>
    xxxxx
</message>
QUERY;

$sock  = @fsockopen($url, 80, $errno, $errstr, 30);
if (!$sock) exit("error");

    $len  = strlen($data);
    $auth =  base64_encode("{$user}:{$pass}");
    $request = <<<REQ
POST http://{$url}{$path} HTTP/1.0
Host:{$url}
Authorization: Basic {$auth}
Content-Type:text/xml
Content-length: {$len}


REQ;
    $request.= $data;
    $answ    = '';
    if(fwrite($sock,$request))
        while(!feof($sock))
            $answ.= fgets($sock);
    fclose($sock);
header("Content-type: text/plain");
print($answ);

Автор: vpokorp 13.1.2008, 02:02
Не знаю - у меня с этим ничего не выходит - завел все свои данные (логин, пароль, домен адрес страницы авторизации - просто рисует ту самую страницу - как будто скрипт ничего не вводил

Не совсем понял - что такое данные date - там у меня ничего не стоит - просто убрал крестики

Автор: maykoff 13.1.2008, 11:47
Цитата

ту самую страницу 
 - какую именно?
Аутентификация  - http? Не через форму?
попробуй убрать Authorization: Basic {$auth} и сравни вывод.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)