08. april 2004 - 13:24Der er
20 kommentarer og 1 løsning
Password system
Hej Eksperter;
Jeg har fundet ud af, hvordan man kan lave et password-system vha. const og derefter angiver man, hvad ens bruger og password skal være. Men hvordan kan man lave et program, hvor man løbende kan gå ind og ændre ens password og brugernavn ?
Hvis du gør det kan du jo have et id-nummer på hver bruger (kan ikke ændres). Når man så logger ind gemmes dette id i en variabel. Så kan du ændre brugernavn og password vha sql. Noget med
Muligheden for at ændre st kunne måske være via en ini-fil ? jeg har ikke selv spekuleret over det, men det lyder da sjovt.Snowball har lavet nogle gode svar i spm. om inifiler - check evt denne emnegruppe
Kan ikke lige finde spm.et og det handler om databaser, men det kan da være du kan se jer igennem at lave lidt tilpasninger.Koden ku jeg finde til snowballs ini-file program, hvor man vel osse kan modifisere variabler ?:
Jeg fandt sgu selv ud af det :) - det er nok ikk lige den mest optimale løsning, men den virker! Jeg lader alligevel tråden være åben, hvis der nu kom nogle andre gode forslag
Ini filen som gemmer brugernavn og adgangskode kunne krypteres med:
Her i eksemplet bruger jeg en Richedit og gemmer i txt format som er krypteret
function TForm2.EnDeCrypt(const Value : String) : String; var CharIndex : integer; begin Result := Value; for CharIndex := 1 to Length(Value) do Result[CharIndex] := chr(not(ord(Value[CharIndex]))); end;
procedure TForm2.Luk2Click(Sender: TObject); begin RichEdit1.Lines.SaveToFile('inet.txt');
hov...det gik vist lidt for hurtigt her er den igen..
function TForm2.EnDeCrypt(const Value : String) : String; var CharIndex : integer; begin Result := Value; for CharIndex := 1 to Length(Value) do Result[CharIndex] := chr(not(ord(Value[CharIndex]))); end;
procedure TForm2.Luk2Click(Sender: TObject); begin RichEdit1.Lines.SaveToFile('inet.txt');
procedure TForm2.FormClose(Sender: TObject; var Action: TCloseAction); begin RichEdit1.Text := EnDeCrypt(RichEdit1.Text); Form2.RichEdit1.Lines.SaveToFile('inet.txt');
procedure TForm2.FormShow(Sender: TObject); begin RichEdit1.Lines.LoadFromFile('inet.txt'); RichEdit1.Text := EnDeCrypt(RichEdit1.Text);
Har ikke lige læst alle svarende igennem, men hvad med at lave en Form hvorfra man kan loade sin "brugerprofil" ind og så derfra ændre tingene og så gemme dem.
type TForm1 = class(TForm) RichEdit1: TRichEdit; Button1: TButton; function EnDeCrypt(const Value : String) : String; procedure FormShow(Sender: TObject); procedure FormClose(Sender: TObject; var Action: TCloseAction); procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end;
var Form1: TForm1;
implementation
{$R *.DFM}
function TForm1.EnDeCrypt(const Value : String) : String; var CharIndex : integer; begin Result := Value; for CharIndex := 1 to Length(Value) do Result[CharIndex] := chr(not(ord(Value[CharIndex]))); end;
procedure TForm1.FormShow(Sender: TObject); begin RichEdit1.Lines.LoadFromFile('inet.txt'); RichEdit1.Text := EnDeCrypt(RichEdit1.Text); end;
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction); begin RichEdit1.Text := EnDeCrypt(RichEdit1.Text); Form1.RichEdit1.Lines.SaveToFile('inet.txt'); end;
procedure TForm1.Button1Click(Sender: TObject); begin RichEdit1.Lines.SaveToFile('inet.txt'); Close; end;
Min dovenskab fortalte at jeg ikke skulle læse det hele, men jeg har læst dit spørgsmål og nogle af de første svar. Derfor ved jeg ikke om dette er det HELT ønskede svar. Opret et txt-dokument i samme mappe som dit program. Kald det evt. 'kode.txt' Så laver du en memo (1) og en procedure til FormCreate:
procedure TForm1.FormCreate(Sender: TObejct); begin memo1.lines.loadfromfile('kode.txt'); if form2.edit1.text= memo1.lines[0] then //id'en er rigtig if form2.edit2.text= memo1.lines[1] then //password rigtig end;
Så langt - så godt
Lav en ny form (muligvis form3) Her laver du en edit 1, 2 og 3, en memo og en button.
I proceduren button1click:
procedure TForm1.button1click(sender: TObject); begin memo1.lines.add(edit1.text); if edit2.text = edit3.text then begin memo1.lines.add(edit2.text) memo1.lines.savetofile('kode.txt); end; end;
ja det er den lette løsning, men alle kan jo gå ind og læse koden. ydermere gemmes koden i biblioteket hvor *.exe filen er.
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.