Entwickler-Ecke
Internet / Netzwerk - Login über PHP aber nicht im webbrowser
Petros - Di 09.08.11 17:17
Titel: Login über PHP aber nicht im webbrowser
Hallo Delphi Freunde ich habe mal wer ein kleines problem.
Zu dem Thema habe ich schon einige ansätze gefunden aber es war leider nichts dabei was ich genau gesucht habe..
Mein Programm beinhaltet folgene sachen:
Chat
P2P Netzwerk
Kleines Online game
Forum (Twebbrowser)
Jetzt kann mann den chat und das Forum per IE oder FF betreten und einloggen jetzt möchte ich aber das alle sachen über das login der PHP seite laufen lassen..
Das Programm Startet + Login Fenster erscheint + Eingabe der Benutzerdaten + sind daten richtig Öffnet sich ein ein neues Fenster (Hauptfenster) + Login fenster verschwindet + im hauptfenster sind Folgene Button | Chat | Forum | Game | P2P |
Username für den Chat, P2P und Game werden aus Dem Edit Feld Login1.edit1.text ausgelesen und dem entsprechen verwendet..
Für das Forum (Twebbrowser) habe ich folgenen code der auch funktioniert.
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14:
| procedure TLogin1.Button1Click(Sender: TObject); var i : integer; begin WBForum1.webbrowser1.navigate('http://127.0.0.1/login.php'); WBForum1.webbrowser1.OleObject.document.forms.item(0).elements.item('user_name').value := Edit1.Text; WBForum1.webbrowser1.OleObject.document.forms.item(0).elements.item('user_pass').value := Edit2.Text; for i := 0 to (WBForum1.WebBrowser1.OleObject.Document.forms.item(0).elements.length - 1) do begin if (WBForum1.WebBrowser1.OleObject.Document.forms.item(0).elements.Item(i).Value = 'Anmelden') then begin WBForum1.WebBrowser1.OleObject.Document.forms.item(0).elements.Item(i).Click; end; end; |
Jetzt weiß ich aber nicht wie ich die Loginform so schreibe das wenn die Daten richtig sind er Die Hauptform Öffnet und wenn die Daten falsch sind ne meldung kommt per
ShowMessange('User daten falsch oder Sie sind noch nicht registriert');
Habe es schon versucht so zu schreiben aber hat nix gebracht und mir fällt auch weiter keine lösung ein...
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18:
| procedure TLogin1.Button1Click(Sender: TObject); var sURL:String; slEintrag:TStringList; begin slEintrag := TStringList.Create; sURL:='http://127.0.0.1/login.php'; with slEintrag do begin Values['user_name'] := Edit1.Text; Values['user_pass'] := Edit2.Text; end; try Hauptform.show; except ShowMessange('User daten falsch oder Sie sind noch nicht registriert'); end; slEintrag.Free; end; |
Ich hoffe es ist soweit etwas verständlich und Ihr könnt mir etwas helfen oder mir zumindest nen kleinen ansatz geben
MFG petros
Delete - Di 09.08.11 21:53
Zu deinem zweiten Code: Wie denkst du werden die Daten an das PHP Script übertragen? Per Telekinese? Schon mal auf die Idee gekommen das man noch Code braucht, um die Daten an das PHP Script zu übertragen? Und mit etwas Suchen wird man ganz schnell auf die HTTP-Komponente von den Indys stoßen. Passenden Code solltest du hier auch im Forum finden.
Petros - Mi 10.08.11 00:33
Ein paar sachen habe ich ja schon gefunden wie z.B Folgenen code habe ich gefunden und umgeschrieben
Orginal Code
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20:
| var s:string; stream: TStringList; begin try try Stream := TStringList.Create; Stream.Add('user_name'+Edit1.Text); Stream.Add('user_pass'+Edit2.Text); s := idhttp1.Post('http://127.0.0.1/login.php',stream); if (Pos('index.php',s) > 0) then ShowMessage('Du bist Eingeloggt.') else ShowMessage('du bist nicht eingeloggt'); finally Stream.Free; end; except on E: Exception do ShowMessage(E.Message); end; |
Mein veränderter Code
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21:
| procedure TForm1.Button1Click(Sender: TObject); var s:string; stream: TStringList; begin try try Stream := TStringList.Create; Stream.Add ['user_name'] := Edit1.Text; Stream.Add ['user_name'] := Edit1.Text; s := idhttp1.Post('http://127.0.0.1/login.php',stream); if (Pos('index.php',s) > 0) then ShowMessage('Du bist Eingeloggt.') else ShowMessage('du bist nicht eingeloggt'); finally Stream.Free; end; except on E: Exception do ShowMessage(E.Message); end; |
den Orginal code kann ich ja nicht verwenden
Delphi-Quelltext
1: 2:
| Stream.Add('user_name'+Edit1.Text); Stream.Add('user_pass'+Edit2.Text); |
da ja user_name + Edit1.text beim login nicht funktioniert..
daher musste ich es in etwa so umschreiben
Delphi-Quelltext
1: 2:
| Stream.Add ['user_name'] := Edit1.Text; Stream.Add ['user_name'] := Edit1.Text; |
Dann bekomme ich aber folgene Meldung
[DCC Fehler] Unit1.pas(38): E2035 Nicht genügend wirkliche Parameter
Habe auch deine ganzen Links und Posteinträge gelesen und das mit dem If und Pos ist mir ja schon klar..
PS. Ich benutze dafür PHPFusion für den Login
Hier mal die ausgabe von 's'
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66: 67: 68: 69: 70: 71: 72: 73: 74: 75: 76: 77: 78: 79: 80: 81: 82: 83: 84: 85: 86: 87: 88: 89: 90:
| <!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.0 Transitional//EN' 'http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd'> <html xmlns='http://www.w3.org/1999/xhtml' xml:lang='de' lang='de'> <head> <title>Testforum - Login</title> <meta http-equiv='Content-Type' content='text/html; charset=UTF-8' /> <meta name='description' content='' /> <meta name='keywords' content='' /> <link rel='stylesheet' href='themes/Stylo/styles.css' type='text/css' media='screen' /> <link rel='shortcut icon' href='images/favicon.ico' type='image/x-icon' /> <script type='text/javascript' src='includes/jquery/jquery.js'></script> <script type='text/javascript' src='includes/jscript.js'></script> </head> <body> <div class='wrapper'>
<div class='main-header'> <a href='http://127.0.0.1/'><img src='images/logo.png' alt='Test Forum' style='border: 0;' /></a> </div> <div class='sub-header clearfix floatfix'><ul> <li class='first-link'><a href='index.php'> <span>Startseite</span></a></li> </ul> </div> <div class='main-bg'> <div id='side-left'><div class='scapmain-top'></div> <div class='scapmain clearfix'> <div class='flleft'>Navigation</div> </div> <div class='side-body spacer'> <div id='navigation'>
<ul> <li class='first-link'> <a href='index.php' class='side'><img src='themes/Stylo/images/bullet.gif' class='bullet' alt='»' border='0' /> <span>Startseite</span></a></li> </ul> </div> </div> <div class='scapmain-top'></div> <div class='scapmain clearfix'> <div class='flleft'>Mitglieder Online</div> </div>
<div class='side-body spacer'> <img src='themes/Stylo/images/bullet.gif' class='bullet' alt='»' border='0' /> Gäste Online: 1 <img src='themes/Stylo/images/bullet.gif' class='bullet' alt='»' border='0' /> Mitglieder Online: 0
<img src='themes/Stylo/images/bullet.gif' class='bullet' alt='»' border='0' /> Mitglieder insgesamt: 16 <img src='themes/Stylo/images/bullet.gif' class='bullet' alt='»' border='0' /> Neuestes Mitglied: <span class='side'><a href='profile.php?lookup=17' class='profile-link'>Sidonia</a></span> </div>
</div> <div id='side-center' class='side-left'><div class='upper'></div> <div class='content'><div class='capmain-top'></div> <div class='capmain'>Login</div> <div class='main-body floatfix spacer'> <div style='text-align:center'> <form name='loginpageform' method='post' action='news.php'> Benutzername <input type='text' name='user_name' class='textbox' style='width:100px' /> Passwort <input type='password' name='user_pass' class='textbox' style='width:100px' /> <label><input type='checkbox' name='remember_me' value='y' />Login merken</label> <input type='submit' name='login' value='Login' class='button' />
</form> Passwort vergessen?Um ein neues Passwort anzufordern <a href='lostpassword.php' class='side' title='klicke hier'>klicke hier</a>.</div> </div> </div> <div class='lower'></div> </div> <div class='clear'></div> </div> <div class='sub-footer-top'></div> <div class='sub-footer clearfix'> <div class='flleft' style='padding: 15px 0 6px 0;'><!--counter-->3,468 eindeutige Besuche</div> <div class='flright' style='padding: 15px 0 6px 0;'>10. August 2011 - 00:31:34</div>
</div> <div class='main-footer clearfix'> <div class='flleft'> Powered by <a href='http://www.php-fusion.co.uk'>PHP-Fusion</a> copyright © 2002 - 2011 by Nick Jones. Released as free software without warranties under <a href='http://www.fsf.org/licensing/licenses/agpl-3.0.html'>GNU Affero GPL</a> v3. Theme designed by <a href='http://www.agxthemes.com'>Falcon</a></div>
<div class='flright' style='width: 50%; text-align: right;'><div style='text-align:center'>Copyright © 2011</div></div> </div> </div> </body> </html> |
Petros - Mi 17.08.11 15:02
So ich habe jetzt 1 woche lang das ganze Forum durstöbert und viele viele verschiedene cods ausprobiert aber keins will so wirklich funktionieren.
Ich habe auch umgestellt auf ein ganz einfaches php login script aber da bekomm ich es auch nicht hin liegt warscheinlich daran das ich da in dem bereich nicht all zu viel ahnung habe..
Das Login script (ohne datenbank) habe ich als anhang mit beigefügt.
Hier mal der code den ich mehrmals in verschiedenen versionenn ausprobiert habe, aber nicht funktioniert oder ich keine ahnung habe wie es wirklich klappt.
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22:
| Procedure TForm1.login(); var HTMLCode: string; Params: TStringList; begin Params := TStringList.Create; try Params.Add('user' + Edit1.Text); Params.Add('password' + Edit2.Text); HTMLCode := IdHTTP1.Post('http://127.0.0.1/login.html', Params);
if HTMLCode <> '' then ShowMessage('Login erfolgreich') else ShowMessage('Login fehlgeschlagen');
finally Params.Free; end; end; |
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20:
| var s:string; stream: TStringList; begin try try Stream := TStringList.Create; Stream.Add('user'+Edit1.Text); Stream.Add('passwort'+Edit2.Text); s := idhttp1.Post('http://127.0.0.1/login.php',stream); if (Pos('Loggin_in',s) > 0) then ShowMessage('Login erfolgreich') else ShowMessage('Login fehlgeschlagen'); finally Stream.Free; end; except on E: Exception do ShowMessage(E.Message); end; |
Ich bitte euch daher um hilfe.
MFG Petros
BenBE - Mi 17.08.11 15:43
Beim Übergeben der Feld-Namen hast Du das = vergessen um Parameter-Name und Wert zu trennen. Zudem musst Du (laut deinem Script) ein Feld login übergeben. Zwischen Feldname = und Wert darf kein Leerzeichen sein.
Außerdem: Man prüft Booleans nicht mit == (und nur in Ausnahmefällen mit ===) auf ihren Wert. Mal ganz davon abgesehen, dass man Strings nicht mit !$var auf leer prüft: Dafür gibt's empty (sonst bekommst Du da sehr interessante Nebeneffekte rein, die Du sicherlich NICHT beabsichtigst)
Bliebe noch die Geschichte dass deine Redirects an einigen Stellen nicht ganz konsequent sind, wenn Du schon Konstanten/Variablen dafür hernimmst.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!