array и edit

Общие вопросы программирования, алгоритмы и т.п.

Модератор: Модераторы

array и edit

Сообщение jenny » 21.06.2015 22:21:19

Всем привет!

На форме для авторизации имеется два элемента edit (для пароля и для имя пользователя). При введении пароля более 3 раз одного и того же пользователя должна происходить блокировка этого пользователя. Подскажите пожалуйста как это сделать при помощи array. Заранее спасибо :-)
jenny
новенький
 
Сообщения: 59
Зарегистрирован: 25.05.2015 22:45:27

Re: array и edit

Сообщение alex208210 » 21.06.2015 23:05:02

используй цикл for и переменные a,b.
alex208210
постоялец
 
Сообщения: 207
Зарегистрирован: 12.05.2010 13:16:51

Re: array и edit

Сообщение serg_iv » 22.06.2015 10:09:13

alex208210 писал(а):используй цикл for и переменные a,b.

вы что, какие a,b. Международный трибунал в гааге постановил, что блокировать пользователя, можно только переменными x, y. Все остальное признано негуманным по отношению к блокируемому пользователю.
serg_iv
постоялец
 
Сообщения: 276
Зарегистрирован: 15.10.2005 18:45:46
Откуда: Миасс

Re: array и edit

Сообщение Лекс Айрин » 22.06.2015 10:42:05

alex208210, я бы не использовал конкретно в этой ситуации for лучше repeat ... until (неизвестно сколько раз потребуется вводить пароль).

А элементом массива лучше стать запись в которой есть имя пользователя, пароль(или его хеш) количество попыток регистрации и поле блокировки.

Хотя задача странновато выглядит... Имеется в виду количество удачных, неудачных попыток авторизации или просто попыток захода?
Аватара пользователя
Лекс Айрин
долгожитель
 
Сообщения: 5723
Зарегистрирован: 19.02.2013 16:54:51
Откуда: Волгоград

Re: array и edit

Сообщение jenny » 22.06.2015 11:52:25

количество неудачных попыток авторизации
jenny
новенький
 
Сообщения: 59
Зарегистрирован: 25.05.2015 22:45:27

Re: array и edit

Сообщение MiniQ » 22.06.2015 11:53:53

serg_iv писал(а):можно только переменными x, y

<irony>
Что за сексизм? Вы в курсе, что в евросоюзе уже 6 полов? И не в кое случае нельзя пользоваться переменными черного цвета, это может быть расценено, как дискриманация по рассовому признаку.
</irony>
MiniQ
новенький
 
Сообщения: 81
Зарегистрирован: 28.01.2013 16:31:55

Re: array и edit

Сообщение jenny » 22.06.2015 12:10:26

if (username=trim(edit1.Text)) and (pass=trim(maskedit1.Text)) then
begin
Form2.Visible := False;
Form2.ShowModal;
end
else
begin
loginfailed:= loginfailed +1;
if loginfailed >= 3 then
begin
showmessage('авторизация не удалась');
form2.Close;
end;
end;

вот код который я написала, все хорошо функционирует. Да вот только мне бы хотелось чтобы блокировка действовала только на одного пользователя, а тут получается если я каждый раз ввожу разных пользователей с неверным паролем на 3 раз все равно включается блокировка. Вот я и подумала что нужен массив который сохраняет одного определенного пользователя при введении не верного пароля.
jenny
новенький
 
Сообщения: 59
Зарегистрирован: 25.05.2015 22:45:27

Re: array и edit

Сообщение alex208210 » 22.06.2015 12:16:55

Что за сексизм? Вы в курсе, что в евросоюзе уже 6 полов? И не в кое случае нельзя пользоваться переменными черного цвета, это может быть расценено, как дискриманация по рассовому признаку.

Все вышеуказанные проблемы решаются зарезервированной директивой putin в теле цикла. Так же для реализации блокировки пользователя можно использовать сторонние американские библиотеки tolerantkill.pas В них блокировка пользователей толерантна ко всем, не имеет половых, рассовых и прочих различий так как юзер блокируется по ключу "каракатица"

Добавлено спустя 12 минут 49 секунд:
jenny писал(а):вот код который я написала, все хорошо функционирует. Да вот только мне бы хотелось чтобы блокировка действовала только на одного пользователя, а тут получается если я каждый раз ввожу разных пользователей с неверным паролем на 3 раз все равно включается блокировка. Вот я и подумала что нужен массив который сохраняет одного определенного пользователя при введении не верного пароля.


вот реализация кода с циклом for и переменными a,b

Код: Выделить всё
a: array[1..100,1..2] of string;
b:integer;

b:=0;
if (username=trim(edit1.Text)) and (pass=trim(maskedit1.Text)) then
begin
b:=0;
for i:=1 to 100 do begin a[i,1]:=''; a[i,2]:=''; end;
Form2.Visible := False;
Form2.ShowModal;
end
else
begin

for i:=1 to b do
begin {putin_mode}

  if a[i,1]=edit1.Text then
   begin
    loginfailed:= strtoint(a[i,2]) +1;
    a[i,2]:=inttostr(loginfailed);
    showmessage('авторизация не удалась');
    if strtoint(a[i,2])>=3 then begin a[i,2]:='1'; form2.Close; end;
    exit;
   end;   
   
end;

b:=b+1;
a[b,1]:=edit1.Text;
a[b,2]:='1'; 
showmessage('авторизация не удалась');

end;



p.s поправил код v.2
Последний раз редактировалось alex208210 22.06.2015 15:48:08, всего редактировалось 4 раз(а).
alex208210
постоялец
 
Сообщения: 207
Зарегистрирован: 12.05.2010 13:16:51

Re: array и edit

Сообщение Лекс Айрин » 22.06.2015 13:07:09

alex208210, меня бы за такой код учительница по программированию повесила бы )))

Зачем трижды запрашивать авторизацию в цикле? :oops: :oops: :oops: когда можно просто трижды вызвать запрос и проверять в начале количество блокировок?

примерный алгоритм.


Проверить нет ли у пользователя блокировок.
Если да, то проверить как давно был последний заход.(если давно, то сбросить и продолжить если таймаут не проходит --> выход)

пароль верен?
Если да, то вход, сброс блокировок.
Если нет, то увеличиваем количество блокировок на 1.

И все же я настаиваю, что for в этом случае неприемлем. Пользователь может быть и первым в массиве.
Аватара пользователя
Лекс Айрин
долгожитель
 
Сообщения: 5723
Зарегистрирован: 19.02.2013 16:54:51
Откуда: Волгоград

Re: array и edit

Сообщение alex208210 » 22.06.2015 13:09:30

Лекс Айрин писал(а):alex208210, меня бы за такой код учительница по программированию повесила бы )))

Зачем трижды запрашивать авторизацию в цикле? когда можно просто трижды вызвать запрос и проверять в начале количество блокировок?

примерный алгоритм.


Проверить нет ли у пользователя блокировок.
Если да, то проверить как давно был последний заход.(если давно, то сбросить и продолжить если таймаут не проходит --> выход)

пароль верен?
Если да, то вход, сброс блокировок.
Если нет, то увеличиваем количество блокировок на 1.

И все же я настаиваю, что for в этом случае неприемлем. Пользователь может быть и первым в массиве.


код изменен, первоначальный был попыткой адаптировать существующий. Когда увидел что ерунда получается, написал занова. Теперь популяция пингвинов будет цела.
alex208210
постоялец
 
Сообщения: 207
Зарегистрирован: 12.05.2010 13:16:51

Re: array и edit

Сообщение Лекс Айрин » 22.06.2015 13:29:11

alex208210, да ну ... хомячки уже начали дохнуть со смеха.
Аватара пользователя
Лекс Айрин
долгожитель
 
Сообщения: 5723
Зарегистрирован: 19.02.2013 16:54:51
Откуда: Волгоград

Re: array и edit

Сообщение jenny » 22.06.2015 15:22:47

знаю глупый вопрос :oops: но на if a[i,2]>=3 у меня еrror -> Error: Incompatible types: got "ShortInt" expected "AnsiString". Вроде не должно тут быть ошибки...
jenny
новенький
 
Сообщения: 59
Зарегистрирован: 25.05.2015 22:45:27

Re: array и edit

Сообщение alex208210 » 22.06.2015 15:44:14

замени if a[i,2]>=3 на if strtoint(a[i,2])>=3
alex208210
постоялец
 
Сообщения: 207
Зарегистрирован: 12.05.2010 13:16:51

Re: array и edit

Сообщение jenny » 22.06.2015 15:46:56

уже пыталась, не идет....

Добавлено спустя 1 минуту 56 секунд:
все пошло, но блокировка не происходит :-D
jenny
новенький
 
Сообщения: 59
Зарегистрирован: 25.05.2015 22:45:27

Re: array и edit

Сообщение alex208210 » 22.06.2015 15:51:28

jenny писал(а):уже пыталась, не идет....

Добавлено спустя 1 минуту 56 секунд:
все пошло, но блокировка не происходит :-D


не понятно что у вас в коде является блокировкой.. в моем примере с пингвинами.. это form2.close; (закрытие формы авторизации)
alex208210
постоялец
 
Сообщения: 207
Зарегистрирован: 12.05.2010 13:16:51

След.

Вернуться в Общее

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 6

Рейтинг@Mail.ru