Тема: idHTTP...
Показать сообщение отдельно
  #1  
Старый 22.11.2010, 16:17
MrDiG MrDiG вне форума
Начинающий
 
Регистрация: 05.10.2010
Сообщения: 112
Репутация: 1227
По умолчанию idHTTP...

Торможу уже три часа.
При обращении к сайту по адресу http://www.site.ru/auth/login/?auths...sword=PASSWORD
идёт авторизация.

Сниффером проверил - больше ничего не передаётся. Куки естественно ставятся.

Ну вот почему не могу авторизоваться?

Код:
var data:tstringlist;
      PageProfile:string;
      error:boolean;
begin
 IdHTTP1.AllowCookies:=true;
 IdHTTP1.HandleRedirects:=true;
 data:=tstringlist.create;
 data.Add('authsave=1');
 data.Add('login=LOGIN');
 data.Add('password=PASSWORD');
 //http://www.site.ru/auth/login/?authsave=1&login=LOGIN&password=PASSWORD
 error:=false;
 try
  PageProfile:=IdHTTP1.Post('http://www.site.ru/auth/login/', data);
  Memo1.Lines.Add(PageProfile);
 except
  error:=true;
 end;

Плюнул на Delphi - достал любимый PHP:

PHP код:
$url "http://www.site.ru/auth/login/"//УРЛ, куда отправлять данные
 
$login 'LOGIN'//Логин
 
$password 'PASSWORD'//Пароль
 
$user_cookie_file $_SERVER['DOCUMENT_ROOT'].'/cookies.txt'//Полный путь до файла, где будем хранить куки
 
$authsave '1'//
 
$in 'Вход'//Кнопка входа


 
function auth($url) {
        global 
$login$pasword$authsave$user_cookie_file$in// Получаем все POST данные

        
$ch curl_init($url);
        
curl_setopt($chCURLOPT_URL,$url);
        
curl_setopt($chCURLOPT_RETURNTRANSFER,1);
        
curl_setopt($chCURLOPT_USERAGENT"Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322)");


        
curl_setopt($chCURLOPT_COOKIEFILE$user_cookie_file); //Куки раз
        
curl_setopt($chCURLOPT_COOKIEJAR,  $user_cookie_file); //Куки два


        
curl_setopt($chCURLOPT_POST,1); //Будем отправлять POST запрос


 /*
 Формируем и отправляем тот самый POST запрос.
 Как видите, это простая строка, мало чем отличающаяся от GET.
 */
        
curl_setopt($chCURLOPT_POSTFIELDS,"login=$login&password=$password&authsave=1&submit=$in");
        
$html curl_exec($ch);
        
curl_close($ch);
        return 
$html//
 
}


auth($url); // Авторизируемся.

 
function browser($url) {
        
$user_cookie_file $_SERVER['DOCUMENT_ROOT'].'/cookies.txt'//Получаем сохраненный после авторизации файл с куками.
        
$ch curl_init($url);
        
curl_setopt($chCURLOPT_URL,$url);
        
curl_setopt($chCURLOPT_RETURNTRANSFER,1);
        
curl_setopt($chCURLOPT_USERAGENT"Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322)");
        
curl_setopt($chCURLOPT_COOKIEFILE$user_cookie_file); //Подставляем куки раз
        
curl_setopt($chCURLOPT_COOKIEJAR,  $user_cookie_file); //Подставляем куки два
        
$html curl_exec($ch);
        
curl_close($ch);
        return 
$html//Возвращаем ответ
 


Авторизация проходит на ура. Я уже не знаю, где может быть ошибка. Гляньте пожалуйста свежим глазом.
Ответить с цитированием