|
#1
|
|||
|
|||
Indy+Redirect
------------------------------
Последний раз редактировалось ToDayGoodDay, 01.05.2013 в 18:13. |
#2
|
||||
|
||||
вполне нормальное явление после отправки POST запроса авторизации вернуться обратно на главную страницу сайта, но уже авторизованым.
я так понимаю основная задача Цитата:
Цитата:
Пишу программы за еду. __________________ |
#3
|
|||
|
|||
Это значит, что проверка пары логин-пароль верна и проходит.
Но после редиректа на home.php проиходит переадресация на login.php. Потом снова с login на home.php. И так 12 раз. После чего происходит окончательный вылет на heroeswm.ru |
#4
|
||||
|
||||
друг мой, вы про кукисы судя по всему забыли)))
кидайте на форму IdCookieManager, и в подключайте его к idhttp1; Код:
Idhttp1.CookieManager:=IdCookieManager1; |
#5
|
|||
|
|||
Кукисы есть, просто в скопированном куске кода их нет.
|
#6
|
||||
|
||||
NekitoSSSS, тут не в CookieManager проблема. к тому же если AllowCookies:=True; то CookieManager создается не явно:
Код:
procedure TIdCustomHTTP.ProcessCookies(ARequest: TIdHTTPRequest; AResponse: TIdHTTPResponse); var Cookies, Cookies2: TStringList; i: Integer; begin Cookies := nil; Cookies2 := nil; try if not Assigned(FCookieManager) and AllowCookies then begin CookieManager := TIdCookieManager.Create(Self); FFreeOnDestroy := true; end; Пишу программы за еду. __________________ |
#7
|
||||
|
||||
Код:
var AStrings: TStrings; AIdHTTP: TIdHTTP; AIdCookieManager: TIdCookieManager; StrPage: String; begin AIdHTTP:=TIdHTTP.Create(Self); AIdCookieManager:=TIdCookieManager.Create(Self); AStrings:=TStringList.Create; AIdHTTP.CookieManager:=AIdCookieManager; AIdHTTP.AllowCookies:=True; AIdHTTP.HandleRedirects:=False; AIdHTTP.Host:='www.heroeswm.ru'; AIdHTTP.Request.Referer:='http://www.heroeswm.ru/'; try AStrings.Add('LOGIN_redirect=1'); AStrings.Add('login=********'); AStrings.Add('lreseted=1'); AStrings.Add('pass=********'); AStrings.Add('preseted=1'); AIdHTTP.Request.ContentType:='application/x-www-form-urlencoded'; try AIdHTTP.Post('/login.php', AStrings); except if (AIdHTTP.ResponseCode div 100)=3 then begin ACookie:=AIdCookieManager.CookieCollection.Items[0].CookieName+'='+AIdCookieManager.CookieCollection.Items[0].Value+'; '; ACookie:=ACookie+AIdCookieManager.CookieCollection.Items[1].CookieName+'='+AIdCookieManager.CookieCollection.Items[1].Value+'; '; ACookie:=ACookie+AIdCookieManager.CookieCollection.Items[2].CookieName+'='+AIdCookieManager.CookieCollection.Items[2].Value; AIdHTTP.AllowCookies:=False; AIdHTTP.CookieManager:=nil; AIdHTTP.Request.CustomHeaders.Text:='Cookie: '+ACookie; AIdHTTP.Request.ContentType:=''; AIdHTTP.Request.ContentLength:=-1; StrPage:=AIdHTTP.Get('/home.php'); if Pos('<a href="logout', StrPage)>0 then ShowMessage('Ok'); end; end; finally AStrings.Free; AIdCookieManager.Free; AIdHTTP.Free; end; end; Пишу программы за еду. __________________ |
#8
|
|||
|
|||
Увы, но тоже не помогает.
Проверил ч/з Http Analiser - возвращается заглавная страница. При этом он теперь даже не логинится, т.е. аунтификация вообще не проходит. Если через браузер. Причем заметил что после редиректа с login.php на home.php происходим смена значения сессии (PHPSessID) Такое ощущение что сессия пересоздается. Последний раз редактировалось ToDayGoodDay, 14.06.2011 в 18:06. |
#9
|
||||
|
||||
если запустить это http://data.cod.ru/110772 ввести логин/пароль, нажать кнопку и подождать ответа, что будет?
Пишу программы за еду. __________________ |
#10
|
|||
|
|||
Аунтификация тоже не проходит.
POST есть, а GET нету. |
#11
|
|||
|
|||
пароль - ХулиоПедалис
логин - 986532741qwerty Постестил сейчас http analiser, на рабочей версии (т.е. та что не пашет с редиректом) и через браузер. Ощущение будто в полурабочей проге инициализируются со стороны сервака не все значения в кукис. Последний раз редактировалось ToDayGoodDay, 14.06.2011 в 18:44. |
#12
|
||||
|
||||
Цитата:
ну... Пишу программы за еду. __________________ |
#13
|
|||
|
|||
Хм, а почему у меня не пашет. Даже сейчас...
ЗЫ: а можно увидеть код рабочей программки ? |
#14
|
||||
|
||||
не знаю. думаю стоит еще кого-то попросить потестить
код тот же http://www.delphisources.ru/forum/sh...22&postcount=7 только StrPage (StrPage:=AIdHTTP.Get('/home.php')) еще и в TWebBrowser передается для отображения. Пишу программы за еду. __________________ |
#15
|
|||
|
|||
Не понял что изменилось в этом:
StrPage:=AIdHTTP.Get('/home.php') Что-то было дописано до или после этого ? |