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

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

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

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

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

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 30.09.2009, 09:44   #1
didar_
Пользователь
 
Регистрация: 10.02.2009
Сообщений: 21
По умолчанию Аутентификация пользователя

Доброе время суток !
Дана задача сделать аутентификацию пользователя к любой программе. К нему добавить "Регистрацию нового пользователя". При регистраций задать новое имя пользователя самостоятельно, а пароль генеруется машиной. После этого эти данные сохраняются в файле. После регистраций должно быть "Изменение" и "Удаление данных"

Аутентификацию и Регистрацию сделал, но проблема с автоматической генерацой. тут листинг моей проги, но тут польз. сам задает пароль и еще как сделать обратный доступ к файлу с паролями, чтобы изменить или удалять данные ???

Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Edit1: TEdit;
    Edit2: TEdit;
    Button1: TButton;
    Button2: TButton;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Button3: TButton;
    Button4: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button4Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

uses Unit2;

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var f:tstrings;
i,k:integer;
begin
k:=0;
f:=tstringlist.Create();
f.Loadfromfile('I:\keys.txt');
for i:=0 to f.count-1 do
if  (i mod 2=0) and (f.Strings[i]=edit1.Text) and (f.Strings[i+1]=edit2.Text) then k:=k+1;
if k=0 then
Application.MessageBox('Äîñòóï çàïðåùåí! Ïîïðîáóéòå åùå ðàç ','Error',MB_OK)
else   winexec('I:\Delphi\Shifrovanie.exe',0);
f.Free;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
form1.Close;
end;

procedure TForm1.Button4Click(Sender: TObject);
begin
Application.MessageBox('Ïðîáëåìû ñ àóòåíòèôèêàöèåé? íå ñòåñíÿéñÿ, ïèøè íà ','ÕÅ))',MB_OK)
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
form2.show;
end;

end.
Код:
unit Unit2;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm2 = class(TForm)
    Label2: TLabel;
    Edit1: TEdit;
    Label1: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    Edit2: TEdit;
    Edit3: TEdit;
    Edit4: TEdit;
    Label6: TLabel;
    Label7: TLabel;
    Button1: TButton;
    Button2: TButton;
    procedure Button2Click(Sender: TObject);
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form2: TForm2;
  f:textfile;
  str1:string;
  str2:string;


implementation

{$R *.dfm}

procedure TForm2.Button2Click(Sender: TObject);
begin
form2.close;
end;

procedure TForm2.Button1Click(Sender: TObject);
const NAME = 'I:\keys.txt';
var f: textfile;
begin
assignfile(f, NAME);
rewrite(f);
writeln(f, edit3.text);
writeln(f, edit4.text);
closefile(f);
form2.close;
end;

end.

Последний раз редактировалось Stilet; 30.09.2009 в 10:13.
didar_ вне форума
Старый 30.09.2009, 10:15   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
аутентификацию пользователя к любой программе
Это как? Поясни эту фразу.
Цитата:
а пароль генеруется машиной.
Ченить типа:
Код:
var s:string;i:integer;
begin
 setlength(s,12);
 for i:=1 to 12 do begin
  s[i]:=chr(random(100)+32);
 end;
 ShowMessage('Ваш пароль='+s);
end;
I'm learning to live...
Stilet вне форума
Старый 30.09.2009, 11:39   #3
TwiX
Участник клуба
 
Аватар для TwiX
 
Регистрация: 28.07.2009
Сообщений: 1,510
По умолчанию

Или если надо пароль в цифрах и полегче, то
Код:
pas:=random(100000000)+10000000  //восьмизначный
TstringList может сохранять обратно в файл. В нём удаляешь нужные данные и сохраняешь.
TwiX вне форума
Старый 30.09.2009, 19:53   #4
didar_
Пользователь
 
Регистрация: 10.02.2009
Сообщений: 21
По умолчанию

Stilet, он генерует, но всякие символы типа "(" выходит. как сделать пароль тока из букв и цифр ??

TwiX, по твоему коду ошибку выдает (

Есть еще одна проблема. Прога читает тока первые две строки .txt , когда регистрируешь нового пользователя, то старый удаляется, и место него записывается новый. нужно, чтобы записались все пользователи, которые регистрировались. И нужен некий аккаунт админа у которого была возможность изменять или удалять этих регистрированных пользователей.

Последний раз редактировалось didar_; 30.09.2009 в 20:05.
didar_ вне форума
Старый 30.09.2009, 19:59   #5
ОДИНОЧЕСТВО В СЕТИ
Любопытная Вредина
Участник клуба
 
Аватар для ОДИНОЧЕСТВО В СЕТИ
 
Регистрация: 19.06.2009
Сообщений: 1,285
По умолчанию

как сделать пароль тока из букв
в коде от Стилета замени
Код:
s[i]:=chr(random(100)+32);
на
Код:
s[i]:=chr(random(37)+64);// пароль только из заглавных букв лат алфавита
Дурь - это особая форма материи, которая не возникает ниоткуда и не исчезает никуда, а лишь переходит из одной головы в другую.

Последний раз редактировалось ОДИНОЧЕСТВО В СЕТИ; 30.09.2009 в 20:01.
ОДИНОЧЕСТВО В СЕТИ вне форума
Старый 30.09.2009, 20:07   #6
didar_
Пользователь
 
Регистрация: 10.02.2009
Сообщений: 21
По умолчанию

s[i]:=chr(random(37)+64)

все еще имеет всякие символы "№;№!;%:....
didar_ вне форума
Старый 30.09.2009, 20:21   #7
Romms
Пользователь
 
Регистрация: 26.04.2009
Сообщений: 21
По умолчанию

чтобы только заглавные буквы
s[i]:=chr(random(26)+65)

чтобы только маленькие буквы
s[i]:=chr(random(26)+97)

didar_ Вы должны понять почему так... это ASCII коды. Их Вы можете "пребрать" держа левый Альт и набирая числа(от 0 к 255)(на клавишах что с права, при включеном HumLock)


как способ редактирования Вы можете загружать файл в Мемо(memo1.Lines.LoadFromFile('c:\k ey.txt');) и в єтом элементе добавлять(memo1.Lines.Add('TEXT');) и удалять(memo1.Lines.Delete(index: integer); index - номер строки) строки, а потом загружать в файл(memo1.Lines.SaveToFile('c:\key .txt');)

Последний раз редактировалось Romms; 30.09.2009 в 20:37.
Romms вне форума
Старый 30.09.2009, 22:03   #8
TwiX
Участник клуба
 
Аватар для TwiX
 
Регистрация: 28.07.2009
Сообщений: 1,510
По умолчанию

[QUOTE=didar_;
TwiX, по твоему коду ошибку выдает (
[/QUOTE]

Что за ошибка?
ВРоде всё нормально работает.
Код:
var
pass:integer;
begin
pass:=random(100000000)+10000000;  //восьмизначный
ShowMessage(inttostr(pass));
end;
Может Вы просто забыли поставить точку с запятой?)

С файлами легко работать, например, с помощью TStringList:
Код:
var
file:tstringlist;
begin
file:=tstringlist.create;
file.loadfromfile('fileName');
file.stringg[i];  //i-ая строка в файле
end;
TwiX вне форума
Старый 09.10.2009, 07:41   #9
didar_
Пользователь
 
Регистрация: 10.02.2009
Сообщений: 21
По умолчанию

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

Код:
procedure TForm1.Button1Click(Sender: TObject);
var f:tstrings;
i,k:integer;
begin
k:=0;
f:=tstringlist.Create();
f.Loadfromfile('I:\keys.txt');
for i:=0 to f.count-1 do
if  (i mod 2=0) and (f.Strings[i]=edit1.Text) and (f.Strings[i+1]=edit2.Text) then k:=k+1;
if k=0 then
Application.MessageBox('Äîñòóï çàïðåùåí! Ïîïðîáóéòå åùå ðàç ','Error',MB_OK)
else   winexec('I:\garena.exe',0);
f.Free;
end;

Последний раз редактировалось Stilet; 09.10.2009 в 07:59.
didar_ вне форума
Старый 09.10.2009, 08:04   #10
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Например так:
Код:
procedure TForm1.Button1Click(Sender: TObject);
var f:tstrings;
i,k:integer;
begin
k:=0;
f:=tstringlist.Create();
f.Loadfromfile('I:\keys.txt');
 
// Искаем первый Эдит 
i:=f.IndexOf(edit1.Text);
// Искаем второй
 k:=f.IndexOf(edit2.Text);
// если была кнопа нажата меньше чем три раза то
if sender.tag<3 then begin
 // Если в эдитах найдено
 if (i<>-1)and(k<>-1) then
 // Это условие я у тя сдер
  if (k-i=1) then // Принято
 else
  Sender.Tag:=Sender.Tag+1
end else // Было сделано три попытки
 TButton(Sender).Enabled:=false;
f.Free;
end;
Смысл ясен?
I'm learning to live...
Stilet вне форума
Закрытая тема


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
http аутентификация strug PHP 8 30.08.2009 18:38
FTP, аутентификация, событие onCommand spoool Работа с сетью в Delphi 9 15.04.2009 13:37
Права пользователя Zloy_Doomer Операционные системы общие вопросы 5 18.12.2008 17:11
Удаление пользователя треч О форуме и сайтах клуба 4 26.05.2008 21:38