Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Login System (https://www.delphipraxis.net/61305-login-system.html)

dj2289 19. Jan 2006 18:05


Login System
 
Hallo zusammen,

habe folgendes Problem, ich habe mir ein kleines Chatprogramm geschrieben, welches zuerst verschlüsselte Login daten
(Schlüssel wird aus Name,IP,ServerPass,Kennwort errechnet) an den Server schickt und dieser Prüft die Daten und gibt
entsprechend den Client frei. Da Ich nun TCP/IP verwende, und ich nur einen Port nutzen will, ist es notwendig die
funktionen aufzuteilem, wie schaffe ich es also, dass dass Programm erkennt, dass wenn Login:Pass empfangen wird,
die Passwortfunktion aufgerufen wird, oder einfacher: Wie trenne ich den Befehl Login: vom Passwort!
Ich danke für eure Antworten!

ghost007 19. Jan 2006 18:46

Re: Login System
 
hallo,
könntest du mal genau schreiben, welche daten der sserver vom client erhält.

dj2289 19. Jan 2006 18:55

Re: Login System
 
Der Server bekommt einen String

Delphi-Quellcode:
unit login;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ScktComp, IdBaseComponent, IdComponent, IdIPWatch;

type
    TRC4Context = record
    D: array[Byte] of Byte;
    I,J: Byte;
  end;
  TForm1 = class(TForm)
    Label1: TLabel;
    ServerIP: TEdit;
    Label2: TLabel;
    Button1: TButton;
    Button2: TButton;
    servmessage: TMemo;
    Label4: TLabel;
    ClientSocket1: TClientSocket;
    ListBox1: TListBox;
    Label5: TLabel;
    kennung: TEdit;
    Label3: TLabel;
    pass: TEdit;
    servpass: TEdit;
    Label6: TLabel;
    IdIPWatch1: TIdIPWatch;
    procedure Button2Click(Sender: TObject);
    procedure ClientSocket1Connect(Sender: TObject; Socket: TCustomWinSocket);
    procedure Delay(time: word);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure Button1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);

  private
    { Private declarations }
  public
    cryptlicense:Integer;
  end;

var
  Form1: TForm1;

implementation
{$R *.dfm}

function myCoder(s: string; password: Integer; decode: Boolean):string;
var
  i, c, x: Integer;
begin
  if decode then x := -1 else x := 1;
  RandSeed := password;
  Result := '';
  for i := 1 to length(s) do
  begin
    c := ord(s[i]);
    if c in [32..122] then
    begin
      c := c+(x*Random(90));
      if (c<32) or (c>122) then c := c-(x*90);
    end;
    Result := Result + chr(c);
  end;
end;



procedure TForm1.Button1Click(Sender: TObject);
var
license:String;
compare:String;
request : string;
begin
 compare:=Kennung.Text+Pass.Text;
 license := myCoder(compare, StrToInt(servpass.Text), False);
 ClientSocket1.Host:=ServerIp.Text;
 ClientSocket1.Active:=True;
 request:=license;
 delay(500);
 ClientSocket1.Socket.SendText(request+':'+IdIPWatch1.LocalIP);
 Button1.Enabled :=false;
 Button2.Enabled :=true;
end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
delay(500);
ClientSocket1.Close;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
ServMessage.Lines.add('Projekt Version 0.1 BETA');
ServMessage.Lines.add('------------------------');
ServMessage.Lines.add('Login Consol Ready     ');
ServMessage.Lines.add('Locale IP:'+IdIPWatch1.LocalIP);
ServMessage.Lines.add('------------------------');
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
ClientSocket1.Socket.SendText(Kennung.Text+' abgemeldet');
ClientSocket1.Close;
ServMessage.Lines.add('Abmeldung vom Server');
Button1.enabled:=true;
Button2.enabled:=false;
end;

procedure TForm1.ClientSocket1Connect(Sender: TObject;
  Socket: TCustomWinSocket);
begin
ServMessage.Lines.add('Client meldet: Verbunden (001) :: '+TimeToStr(now));
end;

procedure TForm1.Delay(time: word);
var Start : Integer;
begin
  Start:=GetTickCount;
  while (GetTickCount)-(Start) <= time do
    Application.ProcessMessages;
end;


end.

ghost007 19. Jan 2006 19:47

Re: Login System
 
also,
so wie ich das sehe uss man kein Passwort oder ähnliches eingeben bei dir, oder?
1.Wenn das so ist, warum brauchst du ein login?
2.Warum soll die verschlüsselt sein?
3.Ich habe das bei meinem chat so gelöst:

vom Client an Server:
Delphi-Quellcode:
Kennung:=IP,Name,Serverkennwort
Dann beim Server:
on recieved text
Delphi-Quellcode:
ListBox1.Commatext:=recievedtext;
{dann steht in der ersten zeile der ListBox die IP und in der zweiten der Name und in der dritten das Serverkennwort}
dann kannst du:
Delphi-Quellcode:
if ListBox1.Items.Strings[3]='festesServerpasswort' then
ServerSocket1.Socket.SendText('Login correct');
und diesen recieve text dann beim client wieder bearbeiten

dj2289 20. Jan 2006 15:50

Re: Login System
 
Ich habe doch ein Passwort, dieses wird in dem Login Script eingeben, das Script nimmt dann Kennwort,ServerPass,Kennung
zusammen und generiert einen Schlüssel


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:05 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz