Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #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//Возвращаем ответ
 


Авторизация проходит на ура. Я уже не знаю, где может быть ошибка. Гляньте пожалуйста свежим глазом.
Ответить с цитированием
  #2  
Старый 22.11.2010, 16:38
Аватар для T-dayne
T-dayne T-dayne вне форума
Начинающий
 
Регистрация: 26.01.2010
Сообщения: 180
Репутация: 31
По умолчанию

попробуй еще поставить
Код:
idhttp1.request.useragent:='Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322)';

Мне однажды это помогло авторизоваться
Ответить с цитированием
  #3  
Старый 22.11.2010, 16:53
MrDiG MrDiG вне форума
Начинающий
 
Регистрация: 05.10.2010
Сообщения: 112
Репутация: 1227
По умолчанию

Спасибо, попробую, но в свойствах idHTTP1 я прописал юзерагент. Сейчас вот с Synapse попробовал - проходит авторизация. А idHTTP какой-то заколдованный
Ответить с цитированием
  #4  
Старый 22.11.2010, 17:17
Аватар для PhoeniX
PhoeniX PhoeniX вне форума
Always hardcore!
 
Регистрация: 04.03.2009
Адрес: СПб
Сообщения: 3,239
Версия Delphi: GCC/FPC/FASM
Репутация: 62149
По умолчанию

А IdCookieManager (или как его там) юзаем?
__________________
Оставайтесь хорошими людьми...
VK id2634397, ds [at] phoenix [dot] dj
Ответить с цитированием
  #5  
Старый 22.11.2010, 17:22
MrDiG MrDiG вне форума
Начинающий
 
Регистрация: 05.10.2010
Сообщения: 112
Репутация: 1227
По умолчанию

idHttp1.CookieManager := IdCookieManager1;
на форму кинул соответствующий компонент из indy misc - результат прежний
Ответить с цитированием
  #6  
Старый 22.11.2010, 17:45
Аватар для pesi
pesi pesi вне форума
Активный
 
Регистрация: 12.09.2008
Сообщения: 275
Репутация: 43
По умолчанию

Точно все куки встают?
Caption кнопки должно отправляться?
Попробуй TidMultiPartFormDataStream.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра
Комбинированный вид Комбинированный вид

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 20:19.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025