Autor |
Beitrag |
helmesb04
      
Beiträge: 29
|
Verfasst: So 31.05.09 14:34
hallo...
ich bin neu hier und habe eine frage
und zwar möchte ich, wenn man mein programm startet vorher erst sein benutzernamen und sein passwort von meiner website eingibt bevor er zum hauptprogramm kommt.
also so stell ich mir das vor:
ein kleines fenster mit: Loginname (dann ein editfeld), darunter Passwort (daneben editfeld) und unter den beiden sachen dann Login oder Abbrechen!
wenn man dann auf login klickt soll er logischer weise zum richtigen programm gehen
und es soll auch ein Logout Button geben, um sich vom Hauptprogramm auszuloggen, allerdings, wenn man sich nicht ausloggt und das programm schließt und wieder öffnet soll man weiterhin eingeloggt bleiben
ich hoffe ihr könnt mir helfen =)
dann noch eine kleine pupsfrage  , wie kann ich tabs anlegen, so das sich wie beim firefox bei verschiedenen tabs die verschiedenen seiten öffnen?
danke =)
|
|
helmesb04 
      
Beiträge: 29
|
Verfasst: So 31.05.09 15:25
keiner ne idee 
|
|
jaenicke
      
Beiträge: 19312
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: So 31.05.09 15:28
Hallo und  im Forum!
Für das Loginfenster erstellst du ein kleines neues Fenster mit den Logineingabefeldern (TEdit für den Benutzernamen, TMaskEdit für das Passwort z.B.). Das zeigst du dann z.B. in FormCreate deines Hauptformulars an. Wichtig dabei: Das Fenster darf nicht automatisch erstellt werden (Projekt --> Optionen --> Formulare), sondern das musst du selbst machen.
Und zu den Tabs: Neue Frage --> neues Thema im Forum!
Grundsätzlich musst du eben nicht nur das TabSheet auf dem PageControl neu erstellen (das du vermutlich benutzt) sondern auch die Darstellungskomponente (also vermutlich TWebBrowser).
// EDIT:
Schiebeposts sind laut den Richtlinien erst nach 24 Stunden erlaubt... 
|
|
helmesb04 
      
Beiträge: 29
|
Verfasst: So 31.05.09 15:44
Hey, danke für deine Antwort =)^^
und entschuldigung das ich das mit den tabs hier hin gepostet habe.
habe jetzt ein neues Formular erstellt und wie du erklärt hast das mit den Benutzernamen und dem Passwort erstellt, sowie ein "login" und ein "abbrechen" button erstellt
jaenicke hat folgendes geschrieben : |
Das zeigst du dann z.B. in FormCreate deines Hauptformulars an. Wichtig dabei: Das Fenster darf nicht automatisch erstellt werden (Projekt --> Optionen --> Formulare), sondern das musst du selbst machen.
|
das habe ich noch nicht ganz verstanden, ich habe bei Projekt --> Optionen --> Form 2 hab ich als hauptformular gemacht
...
hoffe das war soweit richtig!
wie krieg ich das denn hin das wenn ich die benutzernamen und das passwort eingeben habe und auf login klicke zu Form 1 rüberspringt?
der benutzer soll ja auf meiner hp angemeldet sein, das muss man doch irgendwie abfragen oder?
|
|
ffgorcky
      
Beiträge: 573
WIN XP/2000 & 7Prof (Familie:Win95,Win98)
|
Verfasst: So 31.05.09 15:50
Naja, Du könntest doch zum Beispiel das so machen
(Das ist jetzt nur "so aus der Hand geschüttelt", also nicht überprüft):
Delphi-Quelltext 1: 2: 3: 4:
| Clipboard.SetText(LoginName); ActiveControl.KeyDown(VK_TAB,shift); Clipboard.SetText(LoginPasswort); ActiveControl.KeyDown(vk_enter,shift); |
|
|
helmesb04 
      
Beiträge: 29
|
Verfasst: So 31.05.09 15:54
mhm, aber das beantwortet ja eigtl immer noch nicht so richtig die frage, wenn ich
Delphi-Quelltext 1: 2: 3: 4:
| Clipboard.SetText(LoginName); ActiveControl.KeyDown(VK_TAB,shift); Clipboard.SetText(LoginPasswort); ActiveControl.KeyDown(vk_enter,shift); |
eingeben würde, dann wüsste das prog doch immer noch nicht ob die namen richtig oder falsch sind!?,
das prog muss das doch irgendwie von der website oder so abrufen können?
|
|
ffgorcky
      
Beiträge: 573
WIN XP/2000 & 7Prof (Familie:Win95,Win98)
|
Verfasst: So 31.05.09 15:56
Oh - ich habe Dich wohl missverstanden.
Ich dachte, dass Du ein Programm schreiben möchtest, welches automatisch im IE oder so den Login macht.
|
|
Regan
      
Beiträge: 2157
Erhaltene Danke: 72
Java (Eclipse), Python (Sublimetext 3)
|
Verfasst: So 31.05.09 15:57
helmesb04 hat folgendes geschrieben : | das habe ich noch nicht ganz verstanden, ich habe bei Projekt --> Optionen --> Form 2 hab ich als hauptformular gemacht
...
hoffe das war soweit richtig! |
Nein, nicht ganz. Setze mal wieder Form1 als Hauptformular. Du sollst das automatische Erzeugen von Form2 verhindern. Dazu lässt du dir den Programmquelltext der Exe-datei anzeigen (Bei Turbo Delphi geht das mit Rechtsklick ->Quelltext anzeigen) und löscht dort das CreateForm(Form2, TForm2); einfach raus. Im Form1 erstellst du dann Form2 und lässt es per ShowModal anzeigen.
helmesb04 hat folgendes geschrieben : | wie krieg ich das denn hin das wenn ich die benutzernamen und das passwort eingeben habe und auf login klicke zu Form 1 rüberspringt? |
In Form1 kannst du dann, wenn du ShowModal über das ModalResult der Buttons ausgewertest hast, einfach auf die Form2 Komponenten zugreifen.
Zuletzt bearbeitet von Regan am So 31.05.09 15:58, insgesamt 1-mal bearbeitet
|
|
jaenicke
      
Beiträge: 19312
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: So 31.05.09 15:57
ffgorcky hat folgendes geschrieben : | Delphi-Quelltext 1: 2: 3: 4:
| Clipboard.SetText(LoginName); ActiveControl.KeyDown(VK_TAB,shift); Clipboard.SetText(LoginPasswort); ActiveControl.KeyDown(vk_enter,shift); | |
Was hat das jetzt damit zu tun?
helmesb04 hat folgendes geschrieben : | das habe ich noch nicht ganz verstanden, ich habe bei Projekt --> Optionen --> Form 2 hab ich als hauptformular gemacht
...
hoffe das war soweit richtig! |
Nein, du musst dein Hauptformular schon lassen, aber dein Loginformular darf in diesen Optionen nicht links in der Liste der automatisch erstellten Formulare stehen.
Was du dann in FormCreate deines Hauotformulars machst: Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19:
| TfrmMain = class(TForm) ... private FUsername, FPassword: String; end;
...
procedure TfrmMain.FormCreate(Sender: TObject); begin frmLoginForm := TfrmLoginForm.Create(nil); try frmLoginForm.ShowModal; FUsername := frmLoginForm.edtUsername.Text; FPassword := frmLoginForm.edtPassword.Text; finally frmLoginForm.Free; end; end; | Wobei frmMain das Hauptformular, frmLoginForm das Loginfenster und edtUsername und edtPassword darauf die Edits sind.
Danach kannst du dann Benutzername und Passwort überall im Programm in FUsername und FPassword verwenden.
// EDIT:
@ Regan: Das kann man ruhig in den Optionen verändern, man muss die automatische Erzeugung der Formulare nicht manuell korrigieren. 
|
|
helmesb04 
      
Beiträge: 29
|
Verfasst: So 31.05.09 16:17
|
|
jaenicke
      
Beiträge: 19312
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: So 31.05.09 16:19
|
|
helmesb04 
      
Beiträge: 29
|
Verfasst: So 31.05.09 16:30
okay  ,  bin ich blöd^^. das fenster öffnet sich vor dem Form1 fenster =)...
wenn ich aber auf X klicke, also das fenster schließe, dann kommt das Form1 fenster,
und der button login geht noch nicht, hab ich vllt was überlesen??
aber ich frage mich immer noch... wie will der denn den benutzernamen und passwort kennen, wenn er keine "verbindung" zur seite hat?
der muss die doch irgndwie kennen oder irre ich mich?
|
|
jaenicke
      
Beiträge: 19312
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: So 31.05.09 16:41
Naja, du musst bei dem Loginbutton die Eigenschaft ModalResult auf mrOk setzen. Danach kannst du dann fragen Delphi-Quelltext 1: 2:
| if Form2.ShowModal = mrOk then ... | um zu wissen, ob derjenige abgebrochen hat.
Das meinte Regan vorhin.
Und danach liest du ja Benutzername und Passwort aus und musst es natürlich auch verwenden.
|
|
helmesb04 
      
Beiträge: 29
|
Verfasst: So 31.05.09 16:58
jaenicke hat folgendes geschrieben : | Und danach liest du ja Benutzername und Passwort aus und musst es natürlich auch verwenden. |
ähm, ich weiß jetzt nicht ob ihr mich falsch verstanden habt oder ob ich jetzt etwas nicht verstehe^^
beim klicken auf login geht er zu Form1 über, aber auch wenn ich irgend blödsinn in die editfelder eingebe + login button, geht er zu form1 rüber.
das irritiert mich alles ein bisschen, weil das prog, bzw das login fenster doch auf die website zugreifen muss oder, wegen dem namen und dem pw?
|
|
jaenicke
      
Beiträge: 19312
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: So 31.05.09 17:02
Deshalb musst du nach der Anzeige des Loginfensters auch prüfen, ob derjenige Ok gedrückt hatte oder den Dialog abgebrochen hat (siehe oben), und dann musst du die Eingaben eben auch verarbeiten.
In meinem Beispielcode speichere ich die ja nur.
Und wenn der Login inkorrekt war, dann kannst du z.B. das Loginfenster wieder anzeigen, eine Meldung anzeigen, ...
|
|
Regan
      
Beiträge: 2157
Erhaltene Danke: 72
Java (Eclipse), Python (Sublimetext 3)
|
Verfasst: So 31.05.09 17:02
Hast du irgendwo in deinem Quelltext auch eine Überprüfung, ob der Login korrekt ist?
|
|
helmesb04 
      
Beiträge: 29
|
Verfasst: So 31.05.09 17:16
nein hab ich nicht ... , wie soll der das denn auch wissen wenn ich keine verbindung zur website habe, das hab ich ja die ganze zeit gefragt, hab ja auch geschrieben das man einfach irgendn murks schreiben kann und er trotzdem weiterleitet
|
|
jaenicke
      
Beiträge: 19312
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: So 31.05.09 17:23
Ja, das musst du nach der Anzeige des Loginfensters eben machen. Entweder asynchron mit TWebBrowser oder (da es sich um deine Webseite handelt wie du sagtest) besser per TIdHttp und einer speziellen Abfrageseite.
Das heißt du rufst per IdHttp eine bestimmte Seite ab, der du die Daten übergibst, und die gibt nur zurück, ob der Login erfolgreich war. Und dann hast du direkt das Ergebnis.
Wie das konkret aussieht, hängt stark davon ab, wie du auf Serverseite den Login realisierst, ob du TWebBrowser benutzt, Cookies, Referrerchecks, Skripte, ...
|
|
helmesb04 
      
Beiträge: 29
|
Verfasst: So 31.05.09 17:36
uftata  , das überschreitet jetzt aber meinen horizont^^ mit dem TIdHttp hatte ich noch nie was am hut...
Zitat: | Das heißt du rufst per IdHttp eine bestimmte Seite ab, der du die Daten übergibst, und die gibt nur zurück, ob der Login erfolgreich war. Und dann hast du direkt das Ergebnis. |
gibt es irgendwie ein TUT oder hsat du ne ahnung wie sowas funktioniert? oder irgendjemand anderes?
also mit nem beispiel oder sowas, das mir das anschaulicher gemacht wird?
|
|
jaenicke
      
Beiträge: 19312
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: So 31.05.09 17:40
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16:
| uses IdHttp;
var HttpLoader: TIdHttp; PageContents: String; begin HttpLoader := TIdHttp.Create; try PageContents := HttpLoader.Get('http://www.example.com/login.php?name=' + FUsername + '&pass=' + FPassword); if PageContents = 'erfolgreich' then ShowMessage('Login erfolgreich'); finally HttpLoader.Free; end; end; | Das ist natürlich sicherheitstechnisch nicht schön, aber für den Anfang...
Die Seite login.php auf dem Server müsste dann erfolgreich oder was anderes ausgeben als Antwort.
|
|
|