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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 19.07.2012, 22:12   #1
Alex2009
Proger Man
Форумчанин
 
Аватар для Alex2009
 
Регистрация: 07.03.2009
Сообщений: 584
По умолчанию Авторизация на сайте и cookie

Доброго времени суток уважаемые!
Решил изучить и по ходу дела написать простую программу для авторизации на сайте! Парсил код через HTTP Analyzerstd v6. И так саму авторизацию как написать я разобрался, вот код:

Код:
procedure TForm1.Button1Click(Sender: TObject);
var
aut: Tstringlist;
STRone: TStringlist;
begin
aut:=Tstringlist.Create;
STRone := TStringList.Create;
aut.Add('user'+Edit1.Text);
aut.Add('pass'+Edit2.Text);
aut.Add('sublogin=Login');

idhttp1.post('http://91.211.16.141/index.php',aut) ;

if pos('logout',STRone.Text)<>0 then ShowMessage('Авторизовались!')
else
ShowMessage('Авторизация не удалась!');

aut.Free;

end;
Но вот столкнулся с такой проблемой как cookie, сам парсер выдает мне следующее
Код:
gcpusername:Xotab
PHPSESSID:vkibrmj0ah2js35gvkhlrbptk4
Но не могу разобраться как же всетаки их получать, пользовался гуглом но все коды для меня не понятны, все же ближе к сути, как получить эти самые cookie, как я понял делается это GET запросом, но вот а дальше как?
ShowMessage('Добро пожаловать!');
Alex2009 вне форума Ответить с цитированием
Старый 19.07.2012, 22:50   #2
Lesha
Форумчанин
 
Аватар для Lesha
 
Регистрация: 30.01.2009
Сообщений: 418
По умолчанию

Tcookiemanager кинь на форму и подключи его к idhttp
Lesha вне форума Ответить с цитированием
Старый 19.07.2012, 23:42   #3
Alex2009
Proger Man
Форумчанин
 
Аватар для Alex2009
 
Регистрация: 07.03.2009
Сообщений: 584
По умолчанию

Tcookiemanager есть на форме и подключен к IdHttp1 но не работает авторизация почему то, все запросы я отправляю правильно, куки получается тоже принимаю раз как вы сказали Tcookiemanager подключен к idHttp1 но получаю "Авторизация не удалась"
ShowMessage('Добро пожаловать!');
Alex2009 вне форума Ответить с цитированием
Старый 20.07.2012, 02:14   #4
Lesha
Форумчанин
 
Аватар для Lesha
 
Регистрация: 30.01.2009
Сообщений: 418
По умолчанию

хз через FireBug в Firefox с отключенным JS зайди посмотри что там в заголовках браузер шлет и что ему отвечает сервер
Lesha вне форума Ответить с цитированием
Старый 20.07.2012, 02:57   #5
kangreon
Форумчанин
 
Аватар для kangreon
 
Регистрация: 03.04.2009
Сообщений: 305
По умолчанию

Код:
aut.Add('user'+Edit1.Text);
aut.Add('pass'+Edit2.Text);
aut.Add('sublogin=Login');
А вы символ '=' в логине и пароле не пропустили?
Код:
'user='+Edit1.Text
kangreon вне форума Ответить с цитированием
Старый 21.07.2012, 05:06   #6
Alex2009
Proger Man
Форумчанин
 
Аватар для Alex2009
 
Регистрация: 07.03.2009
Сообщений: 584
По умолчанию

спасибо, разобрался
всем кто помог отблагодарил, спасибо вам за отзывчивость)
ShowMessage('Добро пожаловать!');

Последний раз редактировалось Alex2009; 21.07.2012 в 05:12.
Alex2009 вне форума Ответить с цитированием
Старый 21.07.2012, 14:56   #7
Alex2009
Proger Man
Форумчанин
 
Аватар для Alex2009
 
Регистрация: 07.03.2009
Сообщений: 584
По умолчанию

Ребят подскажите как парсить страницу, вот у меня есть такой код в котором нужно узнать ip адрес который между тегом <td class=""> бла бла </td>
Код:
<td class="usergameipaddress">91.211.16.113:27023</td>
Вот сам код авторизации...

Код:
procedure TForm1.Button1Click(Sender: TObject);
var
aut: Tstringlist;
STRone: TStringlist;
s: string;
begin
aut:=Tstringlist.Create;
STRone := TStringList.Create;
aut.Add('user='+Edit1.Text);
aut.Add('pass='+Edit2.Text);
aut.Add('sublogin=Login');

STRone.Text:=idhttp1.post('http://91.211.16.141/index.php',aut) ;
if pos('logout',STRone.Text)<>0 then ShowMessage('Авторизовались!')
else
ShowMessage('Авторизация не удалась!');

aut.Free;
end;
Использовал гугл, но нечего не понял, подскажите код желательно с описанием.
ShowMessage('Добро пожаловать!');
Alex2009 вне форума Ответить с цитированием
Старый 21.07.2012, 18:53   #8
kangreon
Форумчанин
 
Аватар для kangreon
 
Регистрация: 03.04.2009
Сообщений: 305
По умолчанию

Для парсинга почитайте про функции Copy Pos и PosEx. Последняя находится в модуле StrUtils. В некоторых случаях может понадобиться и Delete.

Для конкретно вашего примера можно получить данные таким способом.
Код:
var
  html: string;
  ip: string;
  i: Integer;
begin
  i := PosEx('class="usergameipaddress"', html);
  i := PosEx('>', html, i) + 1; // Для надежности
  if PosEx('</', html, i) <> 0 then
  begin
    ip := Copy(html, i, PosEx('</', html, i) - i);
  end;
kangreon вне форума Ответить с цитированием
Старый 21.07.2012, 19:42   #9
Alex2009
Proger Man
Форумчанин
 
Аватар для Alex2009
 
Регистрация: 07.03.2009
Сообщений: 584
По умолчанию

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

вот код парсинга
Код:
procedure TForm1.Button2Click(Sender: TObject);
var
  ip: string;
  i: Integer;
begin
ip:=IdHTTP1.Get('http://91.211.16.141/system/userservices.php?mode=edit2&opt=edit&ggid=155');
i:=0;
i := PosEx('class="usergameipaddress"', ip);
i := PosEx('>', ip, i) + 1; // Для надежности
if PosEx('</', ip, i) <> 0 then
  begin
    ip := Copy(ip, i, PosEx('</', ip, i) - i);
    memo1.Text:=ip;
  end;
end;
ShowMessage('Добро пожаловать!');
Alex2009 вне форума Ответить с цитированием
Старый 22.07.2012, 15:29   #10
kangreon
Форумчанин
 
Аватар для kangreon
 
Регистрация: 03.04.2009
Сообщений: 305
По умолчанию

Просто запустить код парсинга в цикле с условием.
Код:
  i := 1;
  while PosEx('class="usergameipaddress"', html, i) <> 0 do
  begin
    i := PosEx('class="usergameipaddress"', html, i);
    i := PosEx('>', html, i) + 1;
    if PosEx('</', html, i) <> 0 then
    begin
      ip := Copy(html, i, PosEx('</', html, i) - i);
      // И добавлять ip адрес куда-нибудь
      Memo1.Lines.Add(ip);
    end
    else
    begin
      Break;
    end;
  end;
kangreon вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Авторизация на сайте (проблема с Cookie) ZverBlin Работа с сетью в Delphi 1 25.03.2012 18:56
Авторизация пользователя на сайте с использованием Cookie Olegzxc PHP 6 02.08.2011 08:32
Авторизация на сайте gawrilowalex Работа с сетью в Delphi 3 25.06.2011 00:26
Авторизация на сайте и.... quarty Общие вопросы Delphi 0 30.10.2010 03:22
Авторизация на сайте gusluk Работа с сетью в Delphi 3 20.11.2008 14:40