Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Работа с сетью в Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 20.12.2010, 17:11   #1
nikolas0
Пользователь
 
Аватар для nikolas0
 
Регистрация: 18.12.2010
Сообщений: 85
Вопрос Не проходит логическое условие при авторизации.

Вообщем не могу понять что такое.
Не проходит авторизация через программу вернее как проходит,но не даёт понять это.Даже когда пароль с логином правильный пишет мол не правильный что.
Проверяю программу на скрипте установленом на дэнвере.
Вообщем пишет вот что.
Код:
if Pos('auth=logout',responseres.Text)>0 then
    Result :=True
    else
    Result :=False;
    if Result then
    ShowMessage('Авторизовались!');
Пробывал ещё вот так:
Код:
if Pos('logout',responseres.Text)>0 then
  ShowMessage('Авторизовались!')
  else
  ShowMessage('Иди отсюда');
та же самая история.
прикол в том что в логах записывает не удачные попытки,а удачные нет.
Скрипт авторизации сам до боли прост.
Post методом передаётся всего три параметра.
Может это быть из-за Cookie?
вообщем прошу помощи.
Вот весь код.
Код:
procedure TForm5.btn1Click(Sender: TObject);
var params,responseres:tstringlist;
begin
params:=TStringList.Create;
responseres:=TStringList.Create;
params.Add('auth=login');
params.Add('login='+Edit1.Text);
params.Add('password='+Edit2.Text);
responseres.Text:=http1.Post('http://localhost/auth_script/auth.php',params);
if Pos('logout',responseres.Text)>0 then
  ShowMessage('Авторизовались!')
  else
  ShowMessage('Иди отсюда');

end;
end.

Вот заголовки HTTP
http://localhost/auth_script/auth.php?auth=login

POST /auth_script/auth.php?auth=login HTTP/1.1
Host: localhost
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.2.8) Gecko/20100722 Firefox/3.6.8 WebMoney Advisor
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: ru,en-us;q=0.7,en;q=0.3
Accept-Encoding: gzip,deflate
Accept-Charset: windows-1251,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Referer: http://localhost/auth_script/auth.php
Content-Type: application/x-www-form-urlencoded
Content-Length: 26
login=admin&password=admin
HTTP/1.1 302 Found
Date: Mon, 20 Dec 2010 14:18:56 GMT
Server: Apache/2.2.4 (Win32) mod_ssl/2.2.4 OpenSSL/0.9.8k PHP/5.3.3
X-Powered-By: PHP/5.3.3
Expires: Thu, 01 Jan 1970 00:00:01 GMT
Cache-Control: no-cache, must-revalidate
Pragma: no-cache
Set-Cookie: userID=1%3D%3E21232f297a57a5a743894 a0e4a801fc3%3D%3E21232f297a57a5a743 894a0e4a801fc3; expires=Sun, 27-Oct-2013 06:18:56 GMT; path=/
Location: /auth_script/auth.php
Content-Length: 0
Keep-Alive: timeout=5, max=100
Connection: Keep-Alive
Content-Type: text/html; charset=windows-1251

Последний раз редактировалось nikolas0; 20.12.2010 в 17:21.
nikolas0 вне форума Ответить с цитированием
Старый 20.12.2010, 17:27   #2
Mifody
Заблокирован
 
Регистрация: 12.02.2009
Сообщений: 215
По умолчанию

Цитата:
HTTP/1.1 302 Found
........
Location: /auth_script/auth.php
А у Вас редирект обрабатывается??? Судя по этому заголовку - нет.
Mifody вне форума Ответить с цитированием
Старый 20.12.2010, 17:44   #3
nikolas0
Пользователь
 
Аватар для nikolas0
 
Регистрация: 18.12.2010
Сообщений: 85
По умолчанию

при авторизации не важно какой успешной или нет перенаправление не происходит!
как был адрес
Код:
http://localhost/auth_script/auth.php
так он и остаётся.
при неверном логине или пароле выскакивает alert что мол не правильно.
Авторизация без редиректа выглядит по другому программно?

Последний раз редактировалось nikolas0; 20.12.2010 в 18:17.
nikolas0 вне форума Ответить с цитированием
Старый 20.12.2010, 22:05   #4
nikolas0
Пользователь
 
Аватар для nikolas0
 
Регистрация: 18.12.2010
Сообщений: 85
По умолчанию

кажись понял))
редирект просто нужно отключить так как переадресации как таковой нет.
моя догадка верна?


хрен там теперь ошибка вылетает "HTTP 1.1 302 found"
ушёл гуглить!


возможно ли на основе этого зделать сообщение о успешной авторизации?
я даже кажись где то видел такое.
если нот ерор то выполнить
возможно это?

Последний раз редактировалось nikolas0; 20.12.2010 в 23:29.
nikolas0 вне форума Ответить с цитированием
Старый 21.12.2010, 03:19   #5
ArtGrek
DelphiProger
Участник клуба
 
Аватар для ArtGrek
 
Регистрация: 14.11.2010
Сообщений: 1,023
По умолчанию

я не вижу что б у тебя где нибуд в personseres.Text
добовлялась такая 'auth=logout' или 'logout' строка, а если ее нет то проверка всегда дает 0
я еше не знаю Indy, и http1.Post в частности, может здес вставляеца такая строка, провер???

и еще

Цитата:
if Pos('logout',responseres.Text)>0 then
ShowMessage('Авторизовались!')
else
ShowMessage('Иди отсюда');
думаю если logout ето неверныи логин или пароль
тогда тебе надо поменят местами
ShowMessage('Авторизовались!')
ShowMessage('Иди отсюда');
VirusN13

Последний раз редактировалось ArtGrek; 21.12.2010 в 03:51.
ArtGrek вне форума Ответить с цитированием
Старый 21.12.2010, 09:55   #6
Mifody
Заблокирован
 
Регистрация: 12.02.2009
Сообщений: 215
По умолчанию

Цитата:
"HTTP 1.1 302 found"
а где Вы здесь ошибку увидели????
Сервер ответил "все нормуль, то, что мне прислали, я пережевал и, нашел подходящую страницу, куда надо пойти, вот сюда Location: /auth_script/auth.php"
Это вообщет и есть редирект . А вот что будет после редиректа... Либо сообщение что все Ок (к примеру иногда перебрасывает в профиль), либо нехорошее слово Error
Mifody вне форума Ответить с цитированием
Старый 21.12.2010, 10:21   #7
nikolas0
Пользователь
 
Аватар для nikolas0
 
Регистрация: 18.12.2010
Сообщений: 85
По умолчанию

Цитата:
Сообщение от ArtGrek Посмотреть сообщение

и еще

Код:
if Pos('logout',responseres.Text)>0 then
ShowMessage('Авторизовались!')
else
ShowMessage('Иди отсюда');
думаю если logout ето неверныи логин или пароль
тогда тебе надо поменят местами
ShowMessage('Авторизовались!')
ShowMessage('Иди отсюда');
здесь ничего менять местами не надо.(если не ошибаюсь)
если в тексте страницы равной такой то переменной есть logout и она больше нуля произвести это действие,иначе другое.


Mifody после успешной авторизации появляется просто меню с различными функциями.
if pos(параметр,параметр) ищет на странице указанный текст?
я правильно понял?
редирект значит обратно включить?
nikolas0 вне форума Ответить с цитированием
Старый 21.12.2010, 11:46   #8
Mifody
Заблокирован
 
Регистрация: 12.02.2009
Сообщений: 215
По умолчанию

Так, смтотри, после логина, у тебя сайт сказал 302 Found, следовательно он хочет перейти на страницу, конкретно у тебя она указана Location: /auth_script/auth.php (бывает просто по другому указывается).
Редирект попробуй обработать в idHTTP, параметр кажись AllowRedirect (или как то там, не помню уже, давно не пользовался) установить в True. idHttp должен по автомату на нужную страницу перейти. Если не переходит, то в событии OnRedirect (опять по памяти пишу, ищи чет похожее), попробуй воставить Medot := GET
Mifody вне форума Ответить с цитированием
Старый 21.12.2010, 13:02   #9
nikolas0
Пользователь
 
Аватар для nikolas0
 
Регистрация: 18.12.2010
Сообщений: 85
По умолчанию

Ну это понятно ставлю редирект в true.
радирект проходит,но выполняется почему то
Код:
 else
  ShowMessage('Иди отсюда');
хоть пароль верный хоть нет!
разницы нет никакой всё равно елсе выполняется.
из-за чего может это быть?

Попробывал теперь вот этот код и на сайте в сети
Код:
procedure TForm1.Button1Click(Sender: TObject);
var
  Http  : TidHttp;
  CM    : TidCookieManager;
  Data  : TStringList;
  StrPage, UserID,  UserName  :  String;
  i : integer;
begin
  try
    Http := TIdHTTP.Create(Self);
    Data := TStringList.Create;
    CM := TidCookieManager.Create(Http);
    Http.AllowCookies := true;
    Http.CookieManager := CM;
    Http.HandleRedirects := true;

    Http.Request.Host:='livejournal.com';
    Http.Request.UserAgent:='Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.0.10) Gecko/2009042316 Firefox/3.0.10';
    Http.Request.Accept:='text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8';
    Http.Request.AcceptLanguage:='ru,en-us;q=0.7,en;q=0.3';
    Http.Request.AcceptCharSet:='windows-1251,utf-8;q=0.7,*;q=0.7';
    Http.Request.Referer:='http://www.livejournal.com/';

    Data.Add('mode=login');
    Data.Add('user=' + Edit1.Text);
    Data.Add('password=' + Edit2.Text);
    StrPage := Http.Post('http://www.livejournal.com/login.bml?ret=1', Data);
  finally
    Data.Free;
    CM.Free;
    Http.Free;
  end;

  if Pos('<input class="logoutlj_hidden" id="user" name="user" type="hidden" value="'+Edit1.Text,StrPage) <> 0 then
    ShowMessage('Авторизация прошла успешно')
  else
    ShowMessage('Авторизация провалилась');

  Memo1.Lines.Text := StrPage;
end;
результат
Код:
ShowMessage('Авторизация провалилась');
что такое никак в толк не возьму(((
все пробую и никак)))
набиваю шишки воощем
Буду рад любой мощи в моей теме



Всё разобрался!
не передовал 3й параметр просто!а это нажатие на кнопку!

Последний раз редактировалось Stilet; 09.01.2011 в 13:10.
nikolas0 вне форума Ответить с цитированием
Старый 09.01.2011, 00:46   #10
vebster35
Пользователь
 
Регистрация: 09.01.2011
Сообщений: 11
По умолчанию

nikolas0, у меня возникла подобная же ситуация как и у вас. немог ли бы вы выложить авторизационный скрипт /auth_script/auth.php для денвера на котором у вас возникла проблема.
ЗЫ или оставте свой icq я напишу вам на асю
vebster35 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

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

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Смена картинки при авторизации tyze Общие вопросы Delphi 3 30.06.2010 21:49
Условие для диапазона ячеек, при вводе числовых значений. segail Microsoft Office Excel 3 20.06.2010 00:14
Логическое условие if() Junk1E Общие вопросы C/C++ 3 10.12.2009 22:47
Условие при пустой ячейке victort Microsoft Office Excel 3 29.09.2009 07:00
Условие Locate при активации формы ArtInt БД в Delphi 6 18.04.2009 23:14