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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 21.12.2007, 22:59   #1
Vladimir K.
Пользователь
 
Регистрация: 25.12.2006
Сообщений: 64
По умолчанию Вход на страницу защищенную паролем, и взятие данных.

Привет всем!
Придумал я себе новую головную боль!
Задача такая: подключиться к инету, взять данные (текст, цифры и т.д.) со страницы и вывести в окно программы.
Чтобы войти на страницу надо ввести логин и пароль.
Вот страница: http://www.angelsads.com/pages/enter.php
логин: w123
пароль: 12345
Привожу код проги, которая должна делать то что нужно, но не делает. Есть ошибка, но я ее найти не могу. Подскажите, как сделать правильно.
Код:
unit PExp_U;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, IdHttp, StdCtrls, ComCtrls, ActiveX, MsHtml, IdBaseComponent,
  IdCookieManager, IdComponent, IdTCPConnection, IdTCPClient;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Label1: TLabel;
    RichEdit1: TRichEdit;
    IdCookieManager1: TIdCookieManager;
    IdHTTP1: TIdHTTP;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var lData: TStringList;
    IdHTTP: TIdHttp;
    HTTP: TIdHttp;
    s: string;
    i:integer;

begin
  lData := TStringList.Create;
  try
    lData.Add('username=логин');
    lData.Add('password=пароль');
    IdHTTP.Post('http://www.angelsads.com/pages/enter.php', lData);
    ShowMessage(IdHTTP.Get('http://www.angelsads.com/pages/enter.php'));
  finally
    lData.Free;
  end;

  http:=TIdHTTP.Create(nil);
  try
    s:=http.Get('http://www.angelsads.com/pages/enter.php');
  except
    ShowMessage('No connect with server.');
    Exit;
  end;
  RichEdit1.Lines.Add(s);
  http.Free;

// Поиск слов Hello, Vlad на странице - если вход осуществлен, эти слова найдутся.

if s<>'' then
 begin
 i:=Pos(AnsiLowerCase('Hello, Vlad'),AnsiLowerCase(s));
  if i<=0 then
   begin
    Label1.Caption:='No';
    exit;
   end
   else
   begin
    Label1.Caption:='Yes';
    exit;
   end;
end;
end;
end.
Vladimir K. вне форума Ответить с цитированием
Старый 22.12.2007, 02:08   #2
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

У спортсменов это называется - перетренировался...
Вот ваш код с поправками:
Код:
procedure TForm1.Button1Click(Sender: TObject);
var lData: TStringList;   
    //IdHTTP: TIdHttp;
    //HTTP: TIdHttp;
    s: string;   
    i:integer;   

begin   
  lData := TStringList.Create;
  try
    lData.Add('username=w123'); // или lData.Add('username='+login);
    lData.Add('password=12345'); // или lData.Add('password='+pass);
    IdHTTP1.Post('http://www.angelsads.com/pages/enter.php', lData);
    //ShowMessage(IdHTTP1.Get('http://www.angelsads.com/pages/enter.php')); 
// это чудо-юдо зачем? выводим в ричэдит, если нужно!
  finally   
    lData.Free;   
  end;   
  
  //http:=TIdHTTP.Create(nil); зачем? у вас уже есть компонент!
  try
  RichEdit1.Text:=IdHTTP1.Get('http://www.angelsads.com/pages/enter.php');
  except
    ShowMessage('No connect with server.');
    Exit;
  end;
  //RichEdit1.Lines.Add(s);
  //http.Free;   
  
// Поиск слов Hello, Vlad на странице - если вход осуществлен, эти слова найдутся.   
  
if RichEdit1.Text<>'' then
 begin
 RichEdit1.Lines.SaveToFile('c:\vhod.txt');
// ищем только имя, поскольку фраза может быть разбросана по строкам
// и бог его знает, сколько между ними пробелов и спецсимволов типа переноса
 i:=Pos(AnsiLowerCase('Vlad'),AnsiLowerCase(RichEdit1.Text));   
  if i<=0 then   
   begin   
    Label1.Caption:='No';   
    exit;   
   end   
   else   
   begin   
    Label1.Caption:='Yes';   
    exit;   
   end;   
end;   
end;
И еще вот сюда загляните, может что полезное почерпнете:
http://programmersforum.ru/showthread.php?t=6476

Последний раз редактировалось mihali4; 22.12.2007 в 20:03.
mihali4 вне форума Ответить с цитированием
Старый 22.12.2007, 20:01   #3
Vladimir K.
Пользователь
 
Регистрация: 25.12.2006
Сообщений: 64
По умолчанию

СПАСИБО!!!
Теперь заработало!

А как насчет безопасности (вот так доверять проге логины и пароли), не подскажете?
Vladimir K. вне форума Ответить с цитированием
Старый 23.12.2007, 00:50   #4
Квэнди
Старожил
 
Аватар для Квэнди
 
Регистрация: 13.12.2006
Сообщений: 3,859
По умолчанию

Уровень безопасности не отличается от уровня большинства WIn-броузеров
ICQ не для вопросов, а для предложений. Для вопросов используйте форум
IRC канал клуба программистов|Мои статьи
Квэнди вне форума Ответить с цитированием
Старый 23.12.2007, 01:09   #5
Vladimir K.
Пользователь
 
Регистрация: 25.12.2006
Сообщений: 64
По умолчанию

Попробовал зайти на один сайт: http://deep-c-links.com/pages/enter.php
Захожу нормально, но HTML код загрузить не получается... Поэтому поиск по странице не работает.
Как быть в этом случае?
Логин: 111
Пароль: 111
Vladimir K. вне форума Ответить с цитированием
Старый 23.12.2007, 21:36   #6
Квэнди
Старожил
 
Аватар для Квэнди
 
Регистрация: 13.12.2006
Сообщений: 3,859
По умолчанию

параметры с авторизацией в IdHttp в какие значения выставлены ?
ICQ не для вопросов, а для предложений. Для вопросов используйте форум
IRC канал клуба программистов|Мои статьи
Квэнди вне форума Ответить с цитированием
Старый 25.12.2007, 08:18   #7
Vladimir K.
Пользователь
 
Регистрация: 25.12.2006
Сообщений: 64
По умолчанию

В свойствах IdHttp1?
HTTPOptions - [hoForceEncodeParams]
Это?
Vladimir K. вне форума Ответить с цитированием
Старый 25.12.2007, 09:32   #8
Квэнди
Старожил
 
Аватар для Квэнди
 
Регистрация: 13.12.2006
Сообщений: 3,859
По умолчанию

нет, параметры, связанные с authentification сокращенно auth
ICQ не для вопросов, а для предложений. Для вопросов используйте форум
IRC канал клуба программистов|Мои статьи
Квэнди вне форума Ответить с цитированием
Старый 25.12.2007, 22:17   #9
Vladimir K.
Пользователь
 
Регистрация: 25.12.2006
Сообщений: 64
По умолчанию

Вот все, что нашел:

AuthRetries - 3

HTTPOptions:
hoInProcessAuth - False

ProxyParams:
BasicAuthentication - True

Request:
BasicAuthentication - False
Vladimir K. вне форума Ответить с цитированием
Старый 26.12.2007, 11:07   #10
Квэнди
Старожил
 
Аватар для Квэнди
 
Регистрация: 13.12.2006
Сообщений: 3,859
По умолчанию

hoInProcessAuth - true
ICQ не для вопросов, а для предложений. Для вопросов используйте форум
IRC канал клуба программистов|Мои статьи
Квэнди вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вход после activation date expired Artificial Операционные системы общие вопросы 4 08.08.2008 21:42
Проблема с паролем. White_angel Общие вопросы Delphi 13 18.07.2008 09:48
Вход под одним пользователем Mihael Безопасность, Шифрование 3 21.11.2007 12:14
как из Delphi определить под какой учетной записью осуществлен вход в систему zetrix Безопасность, Шифрование 1 29.10.2006 11:14