Войти

Показать полную графическую версию : [решено] PHP|Логин на сайте


morgan1991
10-12-2009, 17:52
Здравствуйте!
Есть сайт файлообменник, например letitbit.net
Нужно залогинется на нём и затем скачать файл по заранее известной ссылке.
Вижу форму login.php ей отправляется POST-ом логин и пароль, но не понимаю если просто отправлю, то пользователь просто перейдёт на сайт letitbit.net уже залогиненым, а нужно чтоб пользователь не видел сам сайт, а чтоб скрипт перешёл по ссылке скачки файла.

doomspace
10-12-2009, 17:57
парсь-те нужную страничку и выгребайте нужную ссылку. Так как скрипт с логином выполняется на другом сервере и отдаёт информацию страничке на том же сервере, а не Вам.

morgan1991
10-12-2009, 18:18
и выгребайте нужную ссылку »
Какую ссылку? Ссылка уже известна, но если не залогинется на сайте, по ней нельзя перейти...

doomspace
10-12-2009, 18:58
а ну тогда нужны кукисы, ИМХО самый оптимальный вариант во фрейме подгружать страничку letitbit.net
после передачи ей данных

morgan1991
10-12-2009, 20:03
оптимальный вариант во фрейме подгружать страничку letitbit.net »
Не прокатит...
Куки должны быть на сервере, а не у пользователя. Т.к. сервер, где стоит php не сможет перейти по ссылке, потому что куки будут у пользователя, а не на сервере.

Igor_I
10-12-2009, 20:22
Кто логинится, у того и куки.

Sham
10-12-2009, 20:47
Там нужно на уровне протокола работать, через сокет. Комплексные запросы с обработкой заголовков (брать и отправлять кукисы). Для этого есть готовые решения (http://www.phpclasses.org/search.html?words=PHP+HTTP+client+POST+request&forums=F&restrict%5B0%5D=C&section=C&advanced=1&go_search=1).

morgan1991
11-12-2009, 17:31
Мучался, мучался и ничего не смог написать...
Вот скачал клиент http (во вложениях), так и не понял как залогинется...
И ещё кстати я не уверен что корректно рассказал проблему, файл нужно не скачать, а открыть для чтения.
Т.е. нужно залогинеться на сайте, затем уже залогиненым на сайте открыть файл для чтения, т.к. если не залогинеться, то файл не будет доступен...
В архиве есть файл t.php в нём я пытался залогинеться на форуме vbulletin-овском.

Igor_I
11-12-2009, 21:43
var $debug = 0; поставь в 1
Я не пользовался классом, но думаю что надо использовать getheaders для получения заголовков.
При каждом запросе на сервер надо посылать заголовки addheader и их получать.

Sham
12-12-2009, 21:52
из ответа парсим Set-Cookie и отправляем значения в заголовке Cookie... если в облом читать протокол, то формат заголовков можно через firebug (или другой) подсмотреть.

morgan1991
13-12-2009, 13:29
Сделал так:
<?php
include "Client.php";

$http = new Net_HTTP_Client( "letitbit.net", 80 );
$http->setProtocolVersion( "1.1" );
$http->addHeader( "Host", "letitbit.net" );
$http->addHeader( "Connection", "keep-alive" );
$params = array( "log" => "логин", "pas" => "пароль" );
$status = $http->post( "/tmpl/login.php", $params );
$headers = $http->getHeaders();
foreach ($headers as $header)
{
echo "$header<br>";
}
$http->disconnect();
?>

Всё вроди норм работает...
Если пароль и логин верен, то в заголовке возвращает ( getHeaders(); ):


nginx/0.7.62
Sun, 13 Dec 2009 10:22:04 GMT
text/html
chunked
keep-alive
PHP/5.2.11
log=тут логин; expires=Wed, 23-Dec-2009 10:22:04 GMT; path=/; domain=letitbit.net; pas=тут мд5 пароля; expires=Wed, 23-Dec-2009 10:22:04 GMT; path=/;
domain=letitbit.net
http://letitbit.net/

Теперь я так понял нужно получить куки и добавить их через addCookie( cookieName, cookieValue ), чтобы они отправлялись каждый раз, но как их получить????

Igor_I
13-12-2009, 20:23
morgan1991, какой у тебя браузер?

morgan1991
13-12-2009, 20:54
Igor_I, Mozilla Firefox 3.5.5

Спасибо, понял...
Хранится только две куки log и pas... а эти данные возвращаются в заголовке...




© OSzone.net 2001-2012