Avatar billede hclarsen Nybegynder
08. april 2004 - 13:24 Der 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 ?
Avatar billede visuel Nybegynder
08. april 2004 - 13:27 #1
Kan du måske uddybe lidt nærmere??

:)
Avatar billede visuel Nybegynder
08. april 2004 - 13:29 #2
Går ud fra at du arbejder med db!?!
Avatar billede hclarsen Nybegynder
08. april 2004 - 13:32 #3
Nej, egentlig ikk :)

Istedet for at man fx skriver:

const
  ID = 'Bruger';
  PW = 'Hejsa';

så skriver man evt.:

  ID = Form2.Edit1.Text;
  PW = Form2.Edit2.Text;

Nu ved jeg godt dette ikk kan lade sig gøre, men... :)
Avatar billede visuel Nybegynder
08. april 2004 - 13:33 #4
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

"Update * FROM dinTabel WHERE Id =" Id-variabel
Avatar billede visuel Nybegynder
08. april 2004 - 13:34 #5
hmm, hvordan havde du tænkt dig at ID og PW skulle gemmes når programmet er afsluttet?
Avatar billede hclarsen Nybegynder
08. april 2004 - 13:35 #6
Hmm, jeg arbejder jo ikk med sql. Håbede nemlig på, at dette kunne lade sig gøre uden
Avatar billede visuel Nybegynder
08. april 2004 - 13:36 #7
Så er der en god grund til at lære det her ;)
Avatar billede visuel Nybegynder
08. april 2004 - 13:41 #8
Jeg kan ikke se hvordan du vil gemme oplysningerne om brugeren uden at komme uden om db når det drejer sig om Brugeradskillelse.

:)
Avatar billede janbb Juniormester
08. april 2004 - 14:40 #9
Fik denne lille programbid leveret engang her på E:
var
st:string;
{$R *.res}

begin
  Application.Initialize;
  st := inputbox('Password', 'Please enter password:', '');
if st <> '123' then exit;

  Application.CreateForm(TForm1, Form1);
  Application.Run;

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
Avatar billede janbb Juniormester
08. april 2004 - 14:56 #10
Snowballs eks:

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 ?:

implementation

Uses Inifiles;
{$R *.DFM}

const
  DEF_CONN1 = 'Provider=Microsoft.Jet.OLEDB.4.0;Password="";Data Source=';
  DEF_DBPATH = 'database1.mdb';
  DEF_CONN2 = ';Mode=ReadWrite;Persist Security Info=True';

procedure TForm1.SaveSettings;
var
  IniFile : TIniFile;
begin
  IniFile := TIniFile.Create(ExtractFilePath(Application.ExeName) + 'settings.ini');
  IniFile.WriteString('Main','DBPath',Edit1.Text);
  IniFile.Free;
end;

procedure TForm1.LoadSettings;
var
  IniFile : TIniFile;
begin
  IniFile := TIniFile.Create(ExtractFilePath(Application.ExeName) + 'settings.ini');
  Edit1.Text := IniFile.ReadString('Main','DBPath',DEF_DBPATH);
  IniFile.Free;
  If FileExists(Edit1.Text) Then Begin
    ADOConnection1.Connected := False;
    ADOConnection1.ConnectionString := DEF_CONN1 + Edit1.Text + DEF_CONN2;
    ADOConnection1.Connected := True;
    Label2.Caption := 'Forbundet til databasen';
  End
  Else Begin
    ADOConnection1.Connected := False;
    Label2.Caption := 'Ikke forbundet til databasen';
  End;
end;


procedure TForm1.Button1Click(Sender: TObject);
begin
  SaveSettings;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
  LoadSettings;
end;

end.
Avatar billede hclarsen Nybegynder
08. april 2004 - 20:44 #11
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
Avatar billede stone Forsker
08. april 2004 - 23:14 #12
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');

RichEdit1.Text := EnDeCrypt(RichEdit1.Text);
Form2.RichEdit1.Lines.SaveToFile('inet.txt');

RichEdit1.Lines.LoadFromFile('inet.txt');
RichEdit1.Text := EnDeCrypt(RichEdit1.Text);
Avatar billede stone Forsker
08. april 2004 - 23:24 #13
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);

//stone
Avatar billede hclarsen Nybegynder
08. april 2004 - 23:43 #14
Helt sikkeet Stone !

Det var en del bedre end det jeg havde lavet. Det var det samme princip, men .txt var ikk krypteret :)
Avatar billede stefmeister Nybegynder
10. april 2004 - 18:55 #15
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.
Avatar billede stone Forsker
11. april 2004 - 02:59 #16
her er et eksempel

unit Unit1;

interface

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

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;

end.
Avatar billede forfatterksl Nybegynder
26. april 2004 - 10:50 #17
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;

Fortsættes...
Avatar billede stone Forsker
18. maj 2004 - 01:08 #18
hclarsen er du gået død??
//stone
Avatar billede hclarsen Nybegynder
20. maj 2004 - 22:07 #19
Uha, jeg havde sgu glemt alt om denne tråd! Det må I undskylde!

Jeg fandt faktisk selv ud af det, men Forfatterksl's bud er meget tæt på det jeg fandt ud af, så jeg giver da bare dig pointene :)
Avatar billede forfatterksl Nybegynder
15. februar 2005 - 13:47 #20
:-)
Avatar billede stone Forsker
15. februar 2005 - 13:55 #21
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.
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester