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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 21.02.2013, 23:01   #1
develsnik
Форумчанин
 
Регистрация: 21.02.2013
Сообщений: 105
По умолчанию Автроризация через делфи

Добрый вечер,уважаемые программисты.
Вот у меня возникла такая проблема.
Есть сайт на котором только два поля(логин и пароль),больше ничего нет.
Как мне через делфи авторизоваться на нем?
Знаю ,что как кто через idhttp,а как хз(
Вот код этих окон:
<div class="login">

<table width="300" border="0">
<tr>
<td>Вход</td>
</tr>
<tr>
<td><form method="post" action="">
<label>
<input type="text" name="login_name" id="login_name" plaсeholder="логин"/>
</label>
</td>
</tr>
<tr>
<td>
<label>
<input type="password" name="login_password" id="login_password" />
</label>
</td>
</tr>
<tr>
<td>
<label>

<input name="login" id="login" type="hidden" value="submit" /> <input onclick="submit();" name="button" type="submit" id="button" value="Вход" />
</label>
</form></td>
</tr>
</table>
</div>
Заранее спасибо)
develsnik вне форума Ответить с цитированием
Старый 22.02.2013, 10:20   #2
Lardes
Форумчанин
 
Аватар для Lardes
 
Регистрация: 19.08.2011
Сообщений: 329
По умолчанию

Код:
procedure TForm1.Button1Click(Sender: TObject);
var
  LoginInfo: TStringList;
  Response: TStringStream;
begin
  try
    LoginInfo := TStringList.Create;
    Response := TStringStream.Create('');
    LoginInfo.Add('login_name=MyName');
    LoginInfo.Add('login_password=MyPass');
    LoginInfo.Add('login=');
    IdHTTP1.Post('http://mywebsite.xxx/', LoginInfo, Response);
    Showmessage(Response.DataString);
  finally
    begin
      Response.Free;
      LoginInfo.Free;
    end;
  end;
end;
Примерно так
Lardes вне форума Ответить с цитированием
Старый 22.02.2013, 22:08   #3
develsnik
Форумчанин
 
Регистрация: 21.02.2013
Сообщений: 105
По умолчанию

сделал так,программа запустилась,но при нажатии на кнопку открылся html код страницы (
А как бы еще сделать ,что бы если вход удался то вывести сообщение об этом?


procedure TForm1.Button1Click(Sender: TObject);


var
LoginInfo: TStringList;
Response: TStringStream;

begin


try
LoginInfo := TStringList.Create;
Response := TStringStream.Create('');
LoginInfo.Add('login_name=edit1.tex t');
LoginInfo.Add('login_password=edit2 .text');
LoginInfo.Add('login=');
IdHTTP1.Post('http://мойсайт/', LoginInfo, Response);
Showmessage(Response.DataString);
finally
begin
Response.Free;
LoginInfo.Free;
end;
end;
end;
Заранее спасибо)
develsnik вне форума Ответить с цитированием
Старый 22.02.2013, 22:27   #4
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,289
По умолчанию

Цитата:
сделал так,программа запустилась,но при нажатии на кнопку открылся html код страницы (
Ну все правильно
Showmessage(Response.DataString); - показывает код, который пришел от сайта.
Вы должны просмотреть код пришедшей страницы (для удобства сохраните код Response.SaveToFile('code.html'); и откройте его в блокноте) и решить, какая строка однозначно характеризует, что пользователь авторизовался. С помощью функции pos проверить наличие этой строки в Response.DataString и вывести соответствующее сообщение.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )

Последний раз редактировалось BDA; 22.02.2013 в 22:32.
BDA на форуме Ответить с цитированием
Старый 22.02.2013, 22:33   #5
develsnik
Форумчанин
 
Регистрация: 21.02.2013
Сообщений: 105
По умолчанию

блин(
Ничего не понял(
а можно код если Вам не сложно?
develsnik вне форума Ответить с цитированием
Старый 22.02.2013, 23:19   #6
Lardes
Форумчанин
 
Аватар для Lardes
 
Регистрация: 19.08.2011
Сообщений: 329
Радость

Цитата:
Сообщение от BDA Посмотреть сообщение
Ну все правильно
Showmessage(Response.DataString); - показывает код, который пришел от сайта.
Вы должны просмотреть код пришедшей страницы (для удобства сохраните код Response.SaveToFile('code.html'); и откройте его в блокноте) и решить, какая строка однозначно характеризует, что пользователь авторизовался. С помощью функции pos проверить наличие этой строки в Response.DataString и вывести соответствующее сообщение.
+1

Только просматривать тело документа несколько затратно. Проще будет узнать ответ сервера (проверить можно снифером). Как правило при успешной авторизации указывается код ответа примерно 302 или 303 (в общем их куча и универсальной проверки для авторизации нет - для каждого сайта своя структура ответа). Либо в заголовке ответа просмотреть редирект. Ну либо в куках найти что-то идентифицирующее успешность авторизации.

develsnik, исправь, пожалуйста, строчку

Код:
LoginInfo.Add('login_name=edit1.tex t');
LoginInfo.Add('login_password=edit2 .text');
на:

Код:
LoginInfo.Add('login_name=' + edit1.text);
LoginInfo.Add('login_password=' + edit2.text);
На счет кода - разберись что шлет тебе сервер при авторизации с помощью снифера и браузера и повтори тоже самое
Lardes вне форума Ответить с цитированием
Старый 22.02.2013, 23:40   #7
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,289
По умолчанию

Цитата:
универсальной проверки для авторизации нет - для каждого сайта своя структура ответа
Вот именно
Так что, develsnik, никакого кода написать не могу.
Учитесь пользоваться сниффером (мне нравится Charles + Chrome, но можете выбрать какой угодно сниффер).
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA на форуме Ответить с цитированием
Старый 23.02.2013, 11:48   #8
develsnik
Форумчанин
 
Регистрация: 21.02.2013
Сообщений: 105
По умолчанию

это как плагин к хрому идет?
develsnik вне форума Ответить с цитированием
Старый 23.02.2013, 11:55   #9
Lardes
Форумчанин
 
Аватар для Lardes
 
Регистрация: 19.08.2011
Сообщений: 329
По умолчанию

Цитата:
Сообщение от develsnik Посмотреть сообщение
это как плагин к хрому идет?
Отвечу за BDA - нет, это прога (снифер)
Lardes вне форума Ответить с цитированием
Старый 23.02.2013, 12:09   #10
develsnik
Форумчанин
 
Регистрация: 21.02.2013
Сообщений: 105
По умолчанию

так,скачал,запустил, авторизовался на сайте,и на что именно смотреть в программе?
Status Complete
Response Code 302 Found
Protocol HTTP/1.1
Method GET
Content-Type text/html; charset=windows-1251
Client Address /127.0.0.1
Remote Address -
Timing
Request Start Time 23.02.13 12:04:15
Request End Time 23.02.13 12:04:15
Response Start Time 23.02.13 12:04:15
Response End Time 23.02.13 12:04:15
Duration 0 ms
Request Duration 0 ms
Response Duration 0 ms
Latency 0 ms
Speed ∞ KB/s
Response Speed ∞ KB/s
Size
Request Header Size 564 bytes
Response Header Size 334 bytes
Request Size -
Response Size 296 bytes
Total Size 1,17 KB (1194 bytes)
Request Compression -
Response Compression -
develsnik вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вопрос о запуске через делфи. Jleksern Общие вопросы Delphi 7 16.11.2012 00:14
подключение к MsSql через делфи Олька Жи Помощь студентам 2 29.05.2012 14:46
Открытие файла через делфи Vitalya_1993 Помощь студентам 0 18.12.2011 13:48
Создание рисунка в фотошопе через делфи ramzes777 Мультимедиа в Delphi 6 01.10.2011 21:06
юникод в блокнот через делфи Алёна Общие вопросы Delphi 2 19.11.2010 08:55