Entwickler-Ecke
Internet / Netzwerk - Daten an PHP-Script übergeben
Delete - Mi 17.02.10 14:23
Titel: Daten an PHP-Script übergeben
Hallo
habe jetzt mal ein Php Script gemacht des so aussieht:
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9:
| <?PHP require_once("config.php");
if(isset($_POST['name'])){ $tbl_scriptmaker_users = $_POST['stufe']; mysql_query("INSERT INTO $tbl_scriptmaker_users (userid, username, passwort, vorname, nachname, straße, plz, ort, gebdatum, Email) VALUES ('$_POST[userid]', '$_POST[username]','$_POST[passwort]','$_POST[vorname]','$_POST[nachname]','$_POST[straße]','$_POST[plz]','$_POST[ort]','$_POST[gebdatum]','$_POST[Email]')"); } //ende if mysql_close(); ?> |
hab auch noch ne config
nur wie übergib ich die daten von den editfeldern bei delphi an das PhPp script?
lg
Moderiert von
Narses: Topic aus VCL (Visual Component Library) verschoben am Do 18.02.2010 um 23:16
Moderiert von
Narses: Titel geändert.
Delete - Mi 17.02.10 15:38
kan mir den keiner helfen?
Delete - Mi 17.02.10 15:53
ich such ja schon die ganze zeit und ich benutze tidhttp
Blackheart666 - Mi 17.02.10 16:07
maier1990 hat folgendes geschrieben : |
| kan mir den keiner helfen? |
Pushen ist erst nach 24 Stunden erlaubt, aber durch meinen Hinweis steht dein Thread wieder ganz oben. :wink:
Delete - Mi 17.02.10 16:13
oh sorry wusst ich nicht
Kannst du mir vllt. helfen??
platzwart - Mi 17.02.10 16:18
Das war ja schon wieder ein Push...
Xentar - Mi 17.02.10 16:41
Hast du dir meinen Link schon angesehen?
Außerdem hattest du vor 2 Wochen schonmal ein Problem mit Post, und damals laut deiner Aussage ans Laufen bekommen, wo ist also der Unterschied zu dem aktuellen Problem?
http://www.delphi-forum.de/viewtopic.php?t=97589
Delete - Mi 17.02.10 17:00
Weil des andere mein Mail Client war.
Und das ist jetzt für mein Registrierunggsformular.
Ja dein Link hab ich mir angesehen werde aber daraus nicht schlau
lg
Xentar - Mi 17.02.10 17:58
maier1990 hat folgendes geschrieben : |
Weil des andere mein Mail Client war.
Und das ist jetzt für mein Registrierunggsformular. |
Das ändert doch nichts an der Tatsache, WIE die Daten übergeben werden..? Oder irre ich mich?
Sollen wir den Quellcode von DEINEM Mail Client nun so umschreiben, dass er auch auf dein neues Problem passt? Theoretisch musst du doch nur die Post-Bezeichner sowie die Namen der Edit Felder anpassen.
Delete - Mi 17.02.10 18:03
das ist mein php script:
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10:
| <?PHP require_once("config.php");
if(isset($_POST['name'])){ mysql_query("INSERT INTO scriptmaker_users (username, passwort, vorname, nachname, strasse, plz, ort, gebdatum, Email) VALUES ('$_POST[username]','$_POST[passwort]','$_POST[vorname]','$_POST[nachname]','$_POST[strasse]','$_POST[plz]','$_POST[ort]','$_POST[gebdatum]','$_POST[Email]')"); } //ende if mysql_close(); echo("Erfolgreich Registriert"); ?> |
und das mein code für den button:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21:
| var data: TIdMultiPartFormDataStream; begin data := TIdMultiPartFormDataStream.Create; try data.AddFormField('username', username.Text); data.AddFormField('passwort', passwort.text); data.AddFormField('vorname', vorname.text); data.AddFormField('nachname', nachname.text); data.AddFormField('strasse', strasse.text); data.AddFormField('plz', plz.text); data.AddFormField('ort', ort.text); data.AddFormField('gebdatum', gebdatum.text); data.AddFormField('Email', Email.text);
Memo1.Lines.Text := form1.IdHTTP1.Post('http://www.chiller4fun.de/addons/login.php', data); finally data.Free; |
wen ich des programm ausprobiere und den button drücke wird im memo nur Erfolgreich registriert ausgegeben, aber in der MySql Tabelle wurde nichts gespeichert.
Was ist daran falsch??
lg
Xentar - Mi 17.02.10 18:12
Na endlich, wir kommen der Sache näher..
Das ganze hat aber nichts mehr mit Delphi zu tun, sondern ist ein Problem in deinem PHP Skript.
Nun schau dir mal bitte die Bedingung an, wann etwas in die Datenbank geschrieben werden soll. Riichtig, wenn "name" gesetzt ist. In den Postdaten gibt aber nur username und vorname. Also: Korrektes Verhalten. :)
Delete - Mi 17.02.10 18:23
aber der delphi teil ist schon mal richtig oder?
Edit:
Hab mir mal das Php Script angeschaut aber ich kann den Fehler nicht finden.
Was meinst du mit Name?
platzwart - Mi 17.02.10 18:46
Das ist jetzt nicht dein Ernst?!?!?
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10:
| <?PHP require_once("config.php");
if(isset($_POST['name'])){ mysql_query("INSERT INTO scriptmaker_users (username, passwort, vorname, nachname, strasse, plz, ort, gebdatum, Email) VALUES ('$_POST[username]','$_POST[passwort]','$_POST[vorname]','$_POST[nachname]','$_POST[strasse]','$_POST[plz]','$_POST[ort]','$_POST[gebdatum]','$_POST[Email]')"); } //ende if mysql_close(); echo("Erfolgreich Registriert"); ?> |
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21:
| var data: TIdMultiPartFormDataStream; begin data := TIdMultiPartFormDataStream.Create; try data.AddFormField('username', username.Text); data.AddFormField('passwort', passwort.text); data.AddFormField('vorname', vorname.text); data.AddFormField('nachname', nachname.text); data.AddFormField('strasse', strasse.text); data.AddFormField('plz', plz.text); data.AddFormField('ort', ort.text); data.AddFormField('gebdatum', gebdatum.text); data.AddFormField('Email', Email.text);
Memo1.Lines.Text := form1.IdHTTP1.Post('http://www.chiller4fun.de/addons/login.php', data); finally data.Free; |
Delete - Mi 17.02.10 18:56
ja aber wen ich oben name stehen hab dan muss ich daraus username machen oder?
aber ich hab doch mehrere felder
Xentar - Mi 17.02.10 19:05
Mal ehrlich, weißt du, was du da tust, oder hast du dir das Skript nur irgendwo zusammenkopiert?
Um es ganz korrekt zu machen, müsstest du abfragen, ob jeder einzelne Parameter vorhanden ist, und erst dann den MySQL Befehl starten.
Delete - Mi 17.02.10 19:07
ne ich hab es mir kopiert
da ich wegen einmal kein php lernen will
| Zitat: |
| ob jeder einzelne Parameter vorhanden ist, und erst dann den MySQL Befehl starten. |
wie mach ich das?
platzwart - Mi 17.02.10 19:18
Ich möchte dir dringend abraten, das überhaupt zu machen. Wenn du diese einfache Aufgabe nicht hinbekommst, obwohl du fertigen Quelltext und Hinweise zum Abändern hast, dann bist du ein Sicherheitsrisiko für diese Anwendung. Zumal hier Zugangsdaten unverschlüsselt durch die Gegend geschoben werden (und wie ich erschreckend feststellen musste, kostet der Download für dieses "Tool" auch noch auf deiner Website...).
Delete - Mi 17.02.10 19:19
Ich hab es abgeändert aber es geht trotzdem nicht
und wo kostet der Download was?
welcher Download überhaupst?
platzwart - Mi 17.02.10 19:26
1) Ich meinte dein "Mail-Programm"
2) Wie schauts denn nun nach der Abänderung aus?
Delete - Mi 17.02.10 19:48
ach so ja aber sie sind zufrieden mit dem mail client
jetz sieht es so aus:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21:
| var data: TIdMultiPartFormDataStream; begin data := TIdMultiPartFormDataStream.Create; try data.AddFormField('name', name.Text); data.AddFormField('passwort', passwort.text); data.AddFormField('vorname', vorname.text); data.AddFormField('nachname', nachname.text); data.AddFormField('strasse', strasse.text); data.AddFormField('plz', plz.text); data.AddFormField('ort', ort.text); data.AddFormField('gebdatum', gebdatum.text); data.AddFormField('Email', Email.text);
Memo1.Lines.Text := form1.IdHTTP1.Post('http://www.chiller4fun.de/addons/login.php', data); finally data.Free; |
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11:
| <?PHP require_once("config.php");
if(isset($_POST['name'])){
mysql_query("INSERT INTO $scriptmaker_users (name, passwort, vorname, nachname, strasse, plz, ort, gebdatum, Email) VALUES ('$_POST[name]','$_POST[passwort]','$_POST[vorname]','$_POST[nachname]','$_POST[strasse]','$_POST[plz]','$_POST[ort]','$_POST[gebdatum]','$_POST[Email]')"); } //ende if mysql_close(); echo("Erfolgreich Registriert"); ?> |
Delete - Mi 17.02.10 20:34
bitte helft mir doch
platzwart - Mi 17.02.10 20:43
*again* Pushen erst nach 24 Stunden...
Webo - Mi 17.02.10 21:10
maier1990 hat folgendes geschrieben : |
| bitte helft mir doch |
Mal ein ganz allgemeiner Tipp: Wenn du gleich versuchst 50 verschiedene Einträge zu machen, dann hast du 50 mal so viel Fehlerquellen, als wenn du es erstmal
testweise mit einem Eintrag machst. Wenn der nicht funktioniert musst du bei viel weniger Dingen Fehler suchen, als wenn du gleich 50 Einträge machen willst. Wenn dann dieser eine Eintrag funktnioniert, dann kannst du ja die Einträge Stück für Stück erweitern ... aber das nur mal so am Rande !
Gut wäre übrigens auch einen Blick in den allgemeinen Aufbau einer Connection zu MySQL in PHP zu werfen, vllt liegt ja auch da der Fehler begraben :roll:
PHP MYSQL DATENBANK VERBINDEN
Delete - Mi 17.02.10 22:19
Dankeschön Webo
jetz is sie wenigstens verbunden wen ich des Php Script aufrufe und ich kann auch über Php daten eintragen.
Aber wie mach ich es dan das ich sie von Delphi ans Php Script sende?
Xentar - Mi 17.02.10 23:00
maier1990 hat folgendes geschrieben : |
| Aber wie mach ich es dan das ich sie von Delphi ans Php Script sende? |
Ich versteh die Frage (schon wieder) nicht..
Den Delphi Quellcode hast du doch oben schon?
Delete - Mi 17.02.10 23:23
Ja es ist zum Verzweifeln mit mir
Ja den Quelltext hab ich shcon von delphi
aber für php keinen gefunden
ausser den:
Quelltext
1: 2: 3: 4: 5: 6: 7:
| <?php include("config.php");
mysql_query("INSERT INTO `scriptmaker_users`(`username`, `passwort`, 'vorname`, `nachname`, 'straße', 'plz', 'ort', 'gebdatum', 'Email') VALUES ('username', 'passwort' ,'vorname', 'nachname', 'straße', 'plz', 'ort', 'gebdatum', 'email')");
?> |
Xentar - Mi 17.02.10 23:25
Meinste nicht, du solltest dich damit langsam eher an ein PHP Forum wenden? ;)
Delete - Mi 17.02.10 23:29
hm glaub auch
aber eine frage noch.
Bei meinen ersten Php script was chi oben gepostet hab is des schon richtig oder noch nicht ganz?
platzwart - Mi 17.02.10 23:55
Genau das ist doch die Frage für das PHP-Forum... :nixweiss:
Delete - Do 18.02.10 15:23
Soo
Ich hab mir jetzt mal die Arbeit gemacht und in Php ein richtiges Script geschrieben.
Php Script:
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9:
| <?PHP include("config.php");
if ($action == "register") { mysql_query("INSERT INTO scriptmaker_users (username, passwort, aktiviert, vorname, nachname, straße, plz, ort, gebdatum, Email) VALUES ('".$username."', '".$passwort."', '0', '".$vorname."', '".$nachname."','".$strasse."', '".$plz."', '".$ort."','".$gebdatum."', '".$Email."')"); echo("Erfolgreich Registriert"); } ?> |
Delphi Quellcode:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16:
| var data: TIdMultiPartFormDataStream; begin data := TIdMultiPartFormDataStream.Create; try data.AddFormField('username', Edit1.Text); data.AddFormField('passwort', Edit2.text); data.AddFormField('vorname', Edit3.text); data.AddFormField('nachname', Edit4.text); data.AddFormField('strasse', Edit5.text); data.AddFormField('plz', Edit6.text); data.AddFormField('ort', Edit7.text); data.AddFormField('gebdatum', Edit8.text); data.AddFormField('Email', Edit9.text); data.AddFormField('action', 'register'); |
Funktioniert wunderbar.
Wen sich ein user registriert wird er in die DB eingetragen und aktiviert ist er nicht.
Wie mach ich des login?
Da muss ich doch Irgendwie abfragen ob die Userdaten die eingegeben wurden mit der in der Datenbank übereinstimmen oder?
Wie mach ich es wen ich mich einlogg das ich noch ein Feld hab m it user Freischalten und dan ein aktivierungslink an den user verschickt wird??
lg
Edit://
Hab jetzt bei meinen Login Button mal folgendes Eingefügt:
Delphi-Quelltext
1: 2:
| if (Edit1.Text) = '238236' then Form2.Showmodal; |
Ich muss ja jetz woll hier ne if then Abfrage einfügen die Abfrägt ob die Userdaten in der Db existieren und Aktiviert sind oder??
Wie änder ich die If then abfrage oben ab das ich es für zwei felder benutzen kann?
Jakob_Ullmann - Do 18.02.10 15:47
Ich hatte mich gewundert, wieso es funktioniert, weil du hier den Befehl mysql_query verwendest, ohne dich überhaupt mit der Datenbank zu verbinden. Aber vermutlich wird das in der config.php gehandlet, nicht? Vermutlich ist die ja auch kopiert, oder?
Das Login machst du indem du ein <input type="password"> einfügst zusammen mit einem Eingabefeld, dann filterst du mit einer MySQL-Query die Datensätze (was nur einer sein sollte, bzw. keiner bei falschem Passwort), und das kannst du dann anzeigen. Wenn das wirklich sicher sein soll, solltest du Sessions verwenden, außerdem brauchst du einen XSS-Schutz. Die SQL-Abfrage kannst du dir von phpMyAdmin generieren lassen, aber den Rest wirst du hier sicher nicht so einfach rübergeschoben bekommen. Du solltest es entweder lassen oder ein PHP-Buch oder zumindest ein -Tutorial lesen. Grundlagenwissen wirst du dafür nämlich brauchen. Eine Empfehlung habe ich bereits in deinem anderen Thread geäußert.
Programmieren ist mehr als Copy-and-Paste!
Übrigens: Du solltest nicht das Passwort, sondern nur seinen Hash übertragen. Alles andere ist fahrlässig.
Delete - Do 18.02.10 16:04
ja ich verbinde mit der config.php zur Datenbank und nein ich habe die ganze Nacht durchgemacht und Php tutorials Durchgearbeitet.
Wegen Passwort des wird jetzt md5 verschlüßelt ich glaub es is besser.
Nur wegen dem Login nochmal
Kann ich da nicht einfach mit nen Php script ne abfrage machen.
Also das er abfrägt ob user und pw in der datenbank vorhanden sind?
Jakob_Ullmann - Do 18.02.10 16:14
Gut, wenn du dich mit PHP ein wenig auskennst, wird dir die Arbeit mit Arrays ja vertraut sein. Ich werfe einfach mal folgenden Quellcode in die Runde:
C#-Quelltext
1: 2: 3: 4: 5: 6:
| <?php $query = "SELECT * FROM table1 WHERE pw = 'passwd' AND name = $uname"; $res = mysql_query($query); $data = mysql_fetch_assoc($res); echo "Willkommen, <b>$data[name]</b>"; ?> |
Das kannst du auch mit den Indys abholen und dann einfach verarbeiten, das muss nicht einmal eine HTML-Struktur aufweisen. (wie du das abholst, weißt du ja hoffentlich)
Ich glaube übrigens nicht, dass VCL die richtige Sparte dafür ist.
Delete - Do 18.02.10 16:19
Dankeschön jetz hab ihc es fast geschafft.
oha stimmt
---
Moderiert von
Narses: Beiträge zusammengefasst---
jetz hab ich aba noch ne frage wegen den button aktivieren
ihr habt gesagt ich muss den user einen link schicken den er anklicken muss welcher link ist das?
ich dacht mir eig,. so das wen ich auf User aktivieren gehe das dan die Ganzen user aus der Db stehen die noch nicht aktiviert wurden und wen ich einen Anklicke sollte mein mail programm kommen passt des so=?
und wie mach ich das der Button nur für Admins sichtbar ist??
lg
Webo - Do 18.02.10 17:03
maier1990 hat folgendes geschrieben : |
| und wie mach ich das der Button nur für Admins sichtbar ist?? |
Die erste Frage verstehe ich nicht, kann daran liegen, dass ich nicht alles gelesen habe ... aber zur zweiten: Du führst "Benutzerstufen" ein. Da du ja, wie du oben schriebst, php-Tutorials durchgelesen hast, dann werden dir Session-Variablen ja vermutlich etwas sagen. Du könntest dich einloggen, das Skript fragt die Benutzerstufe ab und wenn Benutzerstufe >= Admin ist, dann ist der Button sichtbar. So in etwa ist das zu handhaben.
Jakob_Ullmann - Do 18.02.10 17:41
Das könntest du so machen:
C#-Quelltext
1: 2: 3: 4:
| echo ( ($name == "admin") && ($pw == "adminpasswort") ) ? "<button onclick='javascript:clck()'>Aktivieren</button>" : " "; |
mit
C#-Quelltext
1: 2: 3: 4: 5:
| <script type="text/javascript" language="JavaScript"> function clck() { } </script> |
(oben habe ich den sogenannten ternären Operator verwendet.)
Wobei ich fast glaube, das wäre mit einem Formular einfacher getan, aber im Prinzip geht das so.
Den Aktivierungslink könnte man zum Beispiel so gestalten:
Quelltext
1:
| http://www.webspacexx.de/activateusr.php?usrid=22&id2=114058f5e |
wobei id2 irgendwas ist, was generiert wurde. Das verschickst du an den User und speicherst es ab. Damit stellst du sicher, dass du den User wirklich nur über den Aktivierungslink aktivieren kannst. Beim Generieren solltest du Zufallswerte mit einfließen lassen, denn bloße security by obscurity ist immer unangebracht, da sich ja jeder Zeit nehmen kann, den Algorithmus zu knacken (und wie schnell das geht, kannst du leicht sehen, wenn du mal schaust, wie oft Premiere in letzter Zeit geknackt wurde). usrid ist dann die ID des Users, der aktiviert wird. Die Werte kannst du auslesen mit
C#-Quelltext
1: 2: 3: 4:
| <?php $usrid = $_GET["usrid"]; $id2 = $_GET["id2"]; ?> |
Delete - Do 18.02.10 17:51
Ok Dankeschön an alle die Soviel geduld mit mir hatten ^^
---
Moderiert von
Narses: Beiträge zusammengefasst---
ich bins nochmal
hat doch nich so geklappt
wollte es so machen das wen ein user seine daten bei login eingibt
und auf login button klickt das die daten über php gesenddet werden und geprüft ob sie in de r mysql db da sind wen ja dan soll er sich einloggen können
Ich dacht mir ich sende die daten genauso wie beim registrieren ans php script
und mach mir nur anders php script des die db durchsucht
aber wen ein ok zurück kommt von db das user da is wie nimm ih des wieder zurück das er auch eingelogg wird??
Hier mein php code:
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15:
| <?php include("config.php"); $username = $user_login; $passwort = md5($user_pw); $result = mysql_query("SELECT passwort FROM scriptmaker_users WHERE username='".$username."'"); $row = sql_fetchrow($result) if ($row["passwort"] != $passwort) { echo("Fehler beim Login"); } else { echo("Erfolgreich Eingelogt"); } ?> |
Delete - Do 18.02.10 21:56
den php teil hab ihc ja schon
meine frage is nur
wen ich auf den login buutton klicke und die daten so übergebe wie bei meinen registrierungsformular müsste es ja gehn
nur wie sag ich dem button dan wieder das user vorhanden is also
des php script gibt mir ok zurück wen user vorhanden ist und wen nicht ein falsch
nur wie sag ihc dem button des?
Xion - Do 18.02.10 22:00
Ich hab jetzt nicht alle 3 Seiten gelesen, aber du schickst doch (vermutlich) deine Daten via idhttp.Post. Der Befehl gibt dir aber einen String(?) zurück, wo dann wohl deine Antwort drin stehen wird.
Delete - Do 18.02.10 22:02
mit diesen code hier sende ich meine registrierungsdaten ab:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19:
| data.AddFormField('username', Edit1.Text); data.AddFormField('passwort', Edit2.text); data.AddFormField('vorname', Edit3.text); data.AddFormField('nachname', Edit4.text); data.AddFormField('strasse', Edit5.text); data.AddFormField('plz', Edit6.text); data.AddFormField('ort', Edit7.text); data.AddFormField('gebdatum', Edit8.text); data.AddFormField('Email', Edit9.text); data.AddFormField('Action', 'Register');
Memo1.Lines.Text := form1.IdHTTP1.Post('http://www.chiller4fun.de/register.php', data); finally data.Free; |
Xion - Do 18.02.10 22:04
und was steht denn dann in deinem Memo1?
Delete - Do 18.02.10 22:10
da steht dan Registrierung erfolgreich
des echo wo in php script steht
Xion - Do 18.02.10 22:14
Da dann machs doch so:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17:
| var Response: String; begin data.AddFormField('username', Edit1.Text); data.AddFormField('passwort', Edit2.text);
Response := form1.IdHTTP1.Post('http://www.chiller4fun.de/login.php', data);
if Response='Erfolgreich Eingelogt' then begin end; finally data.Free; end; |
Ich hab das jetzt mal auf den Login umgemünzt, darum gings ja eigentlich glaube ich.
Delete - Do 18.02.10 22:18
bei mir kommt immer folgender fehler:
[Error] Unit1.pas(46): Undeclared identifier: 'data'
[Error] Unit1.pas(47): Missing operator or semicolon
[Error] Unit1.pas(51): There is no overloaded version of 'Post' that can be called with these arguments
[Error] Unit1.pas(57): 'END' expected but 'FINALLY' found
[Fatal Error] Project1.dpr(6): Could not compile used unit 'Unit1.pas'
Xion - Do 18.02.10 22:20
:autsch:
Du solltest vielleicht nicht den Code von mir kopieren, das ist ja nur ein Teil. Kopier die Registrierung in den Login-Button und pass die entsprechend an. Dann hast du auch die Variable data z.B. dabei, die du ja in der Registrierung schon verwendest
Robert.Wachtel - Do 18.02.10 22:31
:hair: Dieser Thread ist jetzt nicht Wirklichkeit, oder? :autsch: Sagt mir bitte, dass das noch Auswirkungen der Karnevalstage :party: sind und ich eigentlich noch träume, ja? :mrgreen:
Delete - Do 18.02.10 22:36
habs jetz so gemacht:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21:
| var data: TIdMultiPartFormDataStream; var Response: String; begin data := TIdMultiPartFormDataStream.Create; try data.AddFormField('user_login', Edit1.Text); data.AddFormField('user_pw', Edit2.text);
Response := form1.IdHTTP1.Post('http://www.chiller4fun.de/login.php', data);
if Response='Erfolgreich Eingelogt' then begin Form2.ShowModal; end; finally data.Free; |
Aber ich kann mich nich einloggen
und wen jetz aber von php script Noch nicht aktiviert ausgegeben wird das es dan auch nich einloggt
---
Moderiert von
Narses: Beiträge zusammengefasst---
hab mal eben mein hinr eingeschaltet und noch was geändert
könnt ihr mir sagen bitte ob er richtig ist weil immer kommt fehler beim login
Delphi-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:
| var data: TIdMultiPartFormDataStream; var Response: String; begin data := TIdMultiPartFormDataStream.Create; try data.AddFormField('username', Edit1.Text); data.AddFormField('passwort', Edit2.text);
Response := form1.IdHTTP1.Post('http://www.chiller4fun.de/login.php', data);
if Response='Erfolgreich Eingelogt' then begin Form2.ShowModal; end; if Response='Noch Nicht Aktiviert' then begin ShowMessage('Dein Account wurde noch nicht Aktiviert'); end; if Response='Fehler beim Login' then begin ShowMessage('Fehler beim Login'); end; finally data.Free; |
Edit://Ok hab ausm php script was geändert jetz kommt aber immer account noch nicht aktiviert ob wohl bei mysql aktiviert auf 1 ist
woran liegt das?
lg
Xion - Do 18.02.10 22:50
maier1990 hat folgendes geschrieben : |
hab mal eben mein hinr eingeschaltet und noch was geändert
|
sehr gut :D
maier1990 hat folgendes geschrieben : |
weil immer kommt fehler beim login
|
Dann ist wohl was an deinem PHP Script faul *keine Ahnung von hat* oder vielleicht sind auch die Parameter anders (username,passwort)...weil password wäre richtiger :D
Du solltest vielleicht noch ein
if Response='' einbauen, falls garkeine Antwort kommt (kein Internet vorhanden oder Server down z.B.)
platzwart - Do 18.02.10 22:55
... oder endlich mal in einem PHP-Forum nachfragen...
Robert.Wachtel - Do 18.02.10 22:58
maier1990 hat folgendes geschrieben : |
| [...] könnt ihr mir sagen bitte ob er richtig ist weil immer kommt fehler beim login [...] |
Nun, dann wird er nicht richtig sein...
Delete - Do 18.02.10 22:58
Oder so
ok dan noch ne frage zu delphi
wie mach ich ne md5 verschlü´ßelung rein
das bei registrierung des pw md5 is
Xion - Do 18.02.10 23:04
Ich frag mich immer warum ich das finde und andre nicht...vielleicht liegts daran, dass andere erst garnicht suchen :roll: Und dabei weiß ich nichtmal was md5 genau ist (scheinbar ne Verschlüsselung) :D
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9:
| function MD5Hash(const Input: WideString): string; begin with TIdHashMessageDigest5.Create do try Result := LowerCase(HashStringAsHex(string(Input))); finally Free; end; end; |
Ok, ich muss sagen wenn ich mir den Code angucke, das mit dem
with TIdHashMessageDigest5.Create do sieht sehr interessant aus
Delete - Do 18.02.10 23:07
In dem man sich eine eine Komponente oder eine Unit sucht, die eine Zeichenkette mit MD5 hashen kann. Einfach mal im Forum nach MD5 suchen.
Und ich würde dir ans Herz legen dir bei deinen Beiträge mal etwas mehr Mühe zu geben. So
| Zitat: |
ok dan noch ne frage zu delphi
wie mach ich ne md5 verschlü´ßelung rein
das bei registrierung des pw md5 is |
kannst du vielleicht mit deinem Kumpels auf der Straße reden, hier im Forum ist es aber mehr als unangepasst. Drei kurze Sätze, in jedem mindestens zwei Rechtschreibfehler, von Grammatik kann man kaum noch sprechen. Und dann erwartest du von uns, dass wir uns Mühe beim Antworten geben, wenn du uns deine Beiträge so hinrotzt?
Delete - Do 18.02.10 23:09
Ja sorry ich hab es nicht so mit der Rechtschreibung.
Also würdet ihr so Lieb sein und mir des mit dem Md5 ein bisschen näher erklären
Mfg
platzwart - Do 18.02.10 23:14
Such doch ein wenig nach MD5, da wirst du unmengen an Infos finden, dass muss doch nicht jemand für dich recherchieren und hier zusammengefasst wiedergeben?!?
Xentar - Do 18.02.10 23:14
maier1990 hat folgendes geschrieben : |
Oder so
ok dan noch ne frage zu delphi
wie mach ich ne md5 verschlü´ßelung rein
das bei registrierung des pw md5 is |
Die Regeln bei der Anmeldung hast du einfach nur weggeklickt, oder?
Dann hol das BITTE nach..
http://www.delphi-forum.de/sites.php?id=9
Da steht z.B. drin ,dass man erst nach 24 Stunden pushen darf, was du ja angeblich anfangs nicht wusstest
Dann steht da noch drin, dass man für jede Frage ein neues Thema aufmachen soll.. was du seit Tagen ignorierst.
Dann noch die Sache, dass man Fragen möglichst verständlich, und direkt mit Quellcode / Fehlermeldung angeben sollte
usw.
Eigeninitiative ist hier übrigens NICHT verboten!
Ich frag mich schon die ganze Zeit, warum das hier noch offen ist?
Delete - Do 18.02.10 23:19
Hmm weis es auch nicht.
Regeln klicke ich immer sofort weg
Ok ich werd sie schnell nachlesen.
Delete - Do 18.02.10 23:22
maier1990 hat folgendes geschrieben : |
| Ja sorry ich hab es nicht so mit der Rechtschreibung. |
Aber du hast anscheinend einen Computer. Installiere dir für Firefox eine Rechtschreibprüfung.
Delete - Do 18.02.10 23:24
Ja werde ich morgen machen.
Ich hab jetzt mal in einen Php Forum mein Php Script gepostet die sagten in diesen Script seie kein Fehler. Sie meinten mein Code übergibt des Passwort nicht richtig.
Könt ihr mir bitte helfen?
lg
Xion - Do 18.02.10 23:31
maier1990 hat folgendes geschrieben : |
| Sie meinten mein Code übergibt des Passwort nicht richtig. |
Hihi, immer das gleiche: "Die andren sind schuld" ^^
Ich glaub ich weiß woran es liegt. Beides ist eigentlich richtig. Allerdings schreibst du beim registrieren das Passwort einfach so rein, willst es aber dann gehasht überprüfen.
Beim Registrieren musst du auch schon das Passwort gehasht in die Datenbank schreiben.
PS: Die Rechtschreibfehler sind nichtmal das Problem. Es würde schon genügen wenn du den Satz nach dem Schreiben nochmal durchliest um Buchstaben dreher und völlig kaputte Gramatik zu sehen. Ich schreib auch manchmal komische Sachen, aber dafür liest man sich das ja nochmals durch.
Delete - Do 18.02.10 23:32
Poste noch mal Script und Delphi Code zusammen in einem Beitrag.
Delete - Do 18.02.10 23:47
Ok
Das hier ist mein Php Script:
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22:
| <?php include("config.php"); $username = $user_login; $passwort = $user_pw; $result = mysql_query("SELECT * FROM scriptmaker_users WHERE username='".$user_login."'"); $row = mysql_fetch_array($result); if ($row["user_passwort"] != $user_passwort) { echo("Fehler beim Login"); } else { if ( (int) $row["aktiviert"] == 1) { echo("Erfolgreich Eingelogt"); } else { echo("Noch Nicht Aktiviert"); } } ?> |
Und das hier mein Delphi Quellcode:
Delphi-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:
| var data: TIdMultiPartFormDataStream; var Response: String; begin data := TIdMultiPartFormDataStream.Create; try data.AddFormField('username', Edit1.Text); data.AddFormField('passwort', Edit2.text);
Response := form1.IdHTTP1.Post('http://www.chiller4fun.de/login.php', data);
if Response='Erfolgreich Eingelogt' then begin Form2.ShowModal; end; if Response='Noch Nicht Aktiviert' then begin ShowMessage('Dein Account wurde noch nicht Aktiviert'); end; if Response='Fehler beim Login' then begin ShowMessage('Fehler beim Login. Versuch es später nocheinmal'); end; if Response='' then begin ShowMessage('Keine Internetverbindung'); end; finally data.Free; |
Lg
Delete - Do 18.02.10 23:59
Und wo holst du in deinem Script die von deinem Delphi Programm geposteten Daten ab?
Delete - Fr 19.02.10 00:03
Edit://
Meinst du jetzt im Php script oder wie?
Komme jetzt grade irgendwie nicht mit.
Xentar - Fr 19.02.10 00:13
Er meint, wie bekommt dein PHP Skript die POST Daten in die Variablen?
Nur weil die Variablen genau so heißen, bringt da nichts..
Narses - Fr 19.02.10 00:16
Moin!
Jetzt nochmal offiziell: Pushen ist hier erst nach 24 Stunden erlaubt. Wenn du nicht in der Lage sein solltest, dich an diese Regel zu halten, werde ich dir demnächst mit 24-stündigen Thread-Sperren "helfen", diese einzuhalten.
Weiterhin hast du bereits den Hinweis bekommen, dass hier pro Thread nur ein Thema (bzw. Frage) erlaubt ist; sonst gibt das Chaos. Auch wenn deine MD5-Probleme mit deinem Programm zu tun haben mögen, sie gehören nicht in diesen Thread. Dafür also bitte einen neuen aufmachen. Danke.
cu
Narses
Delete - Fr 19.02.10 00:16
Ich hab mal denjenigen gefragt der mir des Php Script gemacht hat und er sagte er weis es auch nicht aber bei den Registrierungsformular hats geklappt.
Und mit md5 mach ich dan nen neuen Thread auf ok.
DonManfred - Fr 19.02.10 00:19
Ja, das php-script.
Zeig mal den Inhalt der config.php (evtl. logindaten ausXXsen aber sonst vom inhalt bitte posten). Das hilft bei der Fehlersuche.
Mal davon abgesehen das das PHP-Script fehlerhaft und eine massive Sicherheitslücke ist.
Edit: Nach Narses Post ist es dann wohl besser, wenn du nochmal zum eigentlichen Problem den PHP-Code (samt config.php) postest...
Und Fehlermeldungen, die Dir von php ausgegeben werden oder sonstige Fehlermeldungen wären auch interessant.
Ich kenn mich mit den indy-Komponenten nicht so aus aber es würde helfen, wenn jemand ein post-beispiel posten könnte, wo ein php-script aufgerufen wird, ein oder zwei Werte übergeben werden und welches dann die antwort (ausgabe) vom php-script in ein memo ausgibt... Hat jemand solch ein Code grad zur Hand vielleicht....
Ich würde dann beim php-Problem helfen aber ich bräuchte ein Delphi-Beispiel.
Delete - Fr 19.02.10 00:21
Ok hier mal meine Config.php
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11:
| <?php
$MYSQL_HOST = "xxxxxxxxxx"; $MYSQL_USER = "xxxxx"; $MYSQL_PW = "xxxxxx"; $MYSQL_DB = "xxxxx";
$conn = mysql_connect($MYSQL_HOST, $MYSQL_USER, $MYSQL_PW); mysql_select_db($MYSQL_DB, $conn);
?> |
DonManfred - Fr 19.02.10 00:27
Ok, passt.
diese ausgaben von den echo-Befehlen...
also z.B. echo("Fehler beim Login");
Kommen diese ausgaben bei Dir im Delphi-Programm an???? auch wenn vielleicht die "falsche" Ausgabe erscheint...
Delete - Fr 19.02.10 00:29
Jaa des kommt alles an
Es kommt immer Account noch nicht Aktiviert :(
Xentar - Fr 19.02.10 00:34
Mal ganz naiv gefragt.. hast du mal in die Datenbank geguckt, welchen Wert "aktiviert" hat?
Delete - Fr 19.02.10 00:37
Also wen sich jemand registriert is er auf 0
und wen ich ihn auf 1 stelle ist er normal aktiviert
DonManfred - Fr 19.02.10 00:40
Ok, dann ist entweder der account noch nicht aktiviert (not "$row["aktiviert"] == 1") oder null... Letzteres nehme ich an, weil der Username ja SO $username = $user_login; eigentlich nicht mehr funktionieren sollte wenn man ein aktuelles php hat in dem register_globals auf off stehen, was inzw default ist.
Probiers mal so
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:
| <?php include("config.php"); if (isset($_REQUEST['username'])) $username = mysql_real_escape_string($_REQUEST['username']); else $username = ""; if (isset($_REQUEST['passwort'])) $passwort = mysql_real_escape_string($_REQUEST['passwort']); else $passwort = ""; if ($username != "" && $passwort != ""){ $result = mysql_query("SELECT * FROM scriptmaker_users WHERE username='".$username."'") OR die("MySQL-Fehler: ".mysql_error()); while ($row = mysql_fetch_array($result)){ if ($row["user_passwort"] != $passwort){ echo("Fehler beim Login"); exit; } else { if ( (int) $row["aktiviert"] == 1){ echo("Erfolgreich Eingelogt"); } else if ( (int) $row["aktiviert"] == 0){ echo("Noch Nicht Aktiviert"); } else { echo "Sollte nicht auftreten :D"; } } } } else { echo "Username und/oder Passwort nicht gesetzt"; } ?> |
Delete - Fr 19.02.10 00:44
Da kommt immer Fehler beim login :(
---
Moderiert von
Narses: Beiträge zusammengefasst---
Habe jetzt in einen Php Forum folgendes Php Script bekommen:
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:
| $username = mysql_real_escape_string($_GET['username']); $passwort = md5($_GET['passwort']);
$query = ' SELECT aktiviert FROM scriptmaker_users WHERE username = "'.$user_login.'" AND passwort = "'.$passwort.'"';
$result = mysql_query($query) or die(mysql_error().'<br>'.$query);
if(mysql_num_rows($result) == 1) { $row = mysql_fetch_assoc($result); if ($row["aktiviert"] == 1) { echo("Erfolgreich Eingelogt"); } else { echo("Noch Nicht Aktiviert"); } } else{ echo("Fehler beim Login"); } ?> |
Aber jetzt geht das mit der Ausgabe nicht mehr wie muss ich des jetzt anpassen?
lg
SvenAbeln - Fr 19.02.10 02:35
maier1990 hat folgendes geschrieben : |
Aber jetzt geht das mit der Ausgabe nicht mehr wie muss ich des jetzt anpassen?
|
Wow, was für eine tolle Fehlerbeschreibung. Jetzt dürfen alle hier im Forum raten, wie deine Ausgabe nun aussieht und wie du sie in Wirklichkeit gerne hättest. ;-)
Auf jeden Fall solltest du mal aufpassen wie deine Variablen denn nun heissen.
z.B. in deinem letzten Post (Do 18.02.10 23:44)
Quelltext
1: 2: 3:
| $username = mysql_real_escape_string($_GET['username']); [...] username = "'.$user_login.'" |
Auch die Bezeichner für deine Datenbank Felder sind unterschiedlich:
Quelltext
1: 2: 3: 4:
| (Do 18.02.10 23:44) passwort = "'.$passwort.'"'; (Do 18.02.10 22:47) if ($row["user_passwort"] != $user_passwort) |
Delete - Fr 19.02.10 02:44
es ist so wen ich dieses php script benutze
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22:
| <?php include("config.php"); $username = $user_login; $passwort = $user_pw; $result = mysql_query("SELECT * FROM scriptmaker_users WHERE username='".$user_login."'"); $row = mysql_fetch_array($result); if ($row["passwort"] != $user_pw) { echo("Fehler beim Login"); } else { if ( (int) $row["aktiviert"] == 1) { echo("Erfolgreich Eingelogt"); } else { echo("Noch Nicht Aktiviert"); } } ?> |
kommt immer account noch nicht aktiviert obwohl ich ihn per phpmyadmin schon aktiviert hab
weis aber nicht wieso das dan kommt
SvenAbeln - Fr 19.02.10 03:08
Und wieder zurück zum alten Script ;-)
Im Delphi schickst du aber immer noch diese Felder?
Delphi-Quelltext
1: 2:
| data.AddFormField('username', Edit1.Text); data.AddFormField('passwort', Edit2.text); |
Du Schickst also
username und
passwort
Im PHP verwendest du dann
$user_login und
$user_pw, denen wird hier aber kein Wert zugewiesen.
Quelltext
1: 2: 3: 4: 5: 6: 7: 8:
| <?php include("config.php"); $username = $user_login; $passwort = $user_pw; $result = mysql_query("SELECT * FROM scriptmaker_users WHERE username='".$user_login."'"); $row = mysql_fetch_array($result); if ($row["passwort"] != $user_pw) ?> |
Lass dir doch von PHP mal die Variablen per Echo ausgeben und schau nach was dort im Script überhaupt ankommt.
Delete - Fr 19.02.10 03:12
aber wen ich bei delphi user__login und user_pw benutze
und mich dan einloggen will dann kommt immer Fehler beim Einloggen
Webo - Fr 19.02.10 08:37
Vielleicht weil ein Passwort, Hash oder ähnliches falsch ist ?
Delete - Fr 19.02.10 10:39
Nein eig. nicht
SvenAbeln - Fr 19.02.10 11:01
maier1990 hat folgendes geschrieben : |
| Nein eig. nicht |
Lass dir zur Sicherheit doch einfach mal
$user_login ,
$user_pw und
$row["passwort"] vom PHP ausgeben, dann kannst du sehen was dort ankommt und warum dein Script nicht richtig funktioniert.
Delete - Fr 19.02.10 12:58
Es wird bei allen drei gar nichts ausgegebeen
Robert.Wachtel - Fr 19.02.10 13:10
Spätestens jetzt müsstest Du mit allen vorher schon mindestens ein mal genannten Informationen und Tipps in der Lage sein, das Problem zu erkennen und zu beheben.
Delete - Fr 19.02.10 13:14
Ich bin mir nicht sicher aber kann es sein das da nur irgendwie was verdreht ist?
DonManfred - Fr 19.02.10 13:27
Am besten halt nochmal aktuellen delphi- UND php-Code posten sowie die Struktur der Usertabelle.
Letzteres bekommst du in phpMyAdmin. Siehe Snapshot
Moderiert von
Narses: Inline- in normalen Anhang gewandelt.
ALF - Fr 19.02.10 13:30
Hi, hoffe mich nicht zu irren
wenn ich aber richtig gesehen habe, übergibst Du an php nicht die einzelnen Felder sondern ein Array (data). Was soll PHP damit machen, wenn Du es nicht in der Login.php aus einander nimmst.
Schau Dir mal unten in Deinem Broswer die Zeile an, wenn Du mit der Maus auf ein Link gehst wie die Übergabeparameter sein müssen.
z.B.
...meineseite.de/login.php?
user=username&
passwort=pwd&
email=mail...... usw.
Und jetzt kannst Du in der login.php alle einzelnen Parameter auch abfragen
Quelltext
1: 2: 3:
| if(isset($_POST['user']) if(isset($_POST['passwort']) if(isset($_POST['email']) |
dient nur als Denkanstoss
Also, Die Variablen die Du abfragen willst muss auch so gesendet werden!
Gruss ALf
Delete - Fr 19.02.10 13:35
hier mein delphi quellcode:
Delphi-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:
| var data: TIdMultiPartFormDataStream; var Response: String; begin data := TIdMultiPartFormDataStream.Create; try data.AddFormField('username', Edit1.Text); data.AddFormField('passwort', Edit2.text);
Response := form1.IdHTTP1.Post('http://www.chiller4fun.de/login.php', data);
if Response='Erfolgreich Eingelogt' then begin Form2.ShowModal; end; if Response='Noch Nicht Aktiviert' then begin ShowMessage('Dein Account wurde noch nicht Aktiviert'); end; if Response='Fehler beim Login' then begin ShowMessage('Fehler beim Login. Versuch es später nocheinmal'); end; if Response='' then begin ShowMessage('Keine Internetverbindung'); end; finally data.Free; |
hier mein Php Script:
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22:
| <?php include("config.php"); $username = $user_login; $passwort = $user_pw; $result = mysql_query("SELECT * FROM scriptmaker_users WHERE username='".$user_login."'"); $row = mysql_fetch_array($result); if ($row["passwort"] != $user_pw) { echo("Fehler beim Login"); } else { if ( (int) $row["aktiviert"] == 1) { echo("Erfolgreich Eingelogt"); } else { echo("Noch Nicht Aktiviert"); } } ?> |
Screenshot ist im anhang
Edit:Sry antwort zu spät bemerkt
aber ich wen über nen link fahre mit meiner maus sehe ich nichts im Browser da ich google Chrome nutze
ALF - Fr 19.02.10 13:47
Steht aber auch oben in der Zeile wenn Du eine Webseite aufrufst.
Da stehen auch die Parameter, wie der Aufruf erfolgen muss.
Gruss ALf
Delete - Fr 19.02.10 13:54
ich hab jetzt mal am anfang von meinen script error_reporting(E_ALL); hingeschrieben
weil ich weis das es fehler ausgibt
so bei mir kommt jetzt:
| Zitat: |
Notice: Undefined variable: user_login in /usr/www/users/kdxxxxx/login.php on line 4
Notice: Undefined variable: user_pw in /usr/www/users/kdxxxxx/login.php on line 5
Notice: Undefined variable: user_login in /usr/www/users/kdxxxxx/login.php on line 6
Notice: Undefined variable: user_pw in /usr/www/users/kdxxxxx/login.php on line 8
Fehler beim Login |
ist des user_login und user_pw falsch oder?
@Alf
egal welche seiten ich aufrufe es kommt immer nur der Website name mehr nicht
Moderiert von
Narses: Persönliche Daten aus den Pfaden entfernt und quote-Tags hinzugefügt.
ALF - Fr 19.02.10 14:07
ich benutze nicht google Chrome ....mhh
Du solltest, wenn Du sowas machst, auch einen Browser verwenden wo mann sowas sieht.
Dort erkennt man dann gleich was falsch ist.
Ansonsten schau Dir noch mal an, was ich geschrieben habe, wie das Absenden der Daten aussehen muss.
Wobei z.B.
user die Variable ist, die gesendet wird,
username der Inhalt vom Editfeld ist, usw.
Gruss Alf
Delete - Fr 19.02.10 14:15
Ja werd mir demnächst Firefox holen aber mit Umts internet dauert des halt bissche
Hmmm bin des Script drei mal durchgegangen und komm immernoch nicht auf nen Grünen Zweig :(
@Luckie & Robert.Wachtel
Ihr wisst schon das das Offtopic is :):)
wieso leider
Delete - Fr 19.02.10 14:30
War der Thread gestern nicht geschlossen worden?
Robert.Wachtel - Fr 19.02.10 14:37
Luckie hat folgendes geschrieben : |
| War der Thread gestern nicht geschlossen worden? |
Ja, aber leider scheinbar nur bis Mitternacht... :(
ALF - Fr 19.02.10 14:53
ich habe es Dir doch schon geschrieben!
Dein
Delphi-Quelltext
1:
| Response := form1.IdHTTP1.Post('http://www.chiller4fun.de/login.php', data); |
(data) ist ein Array
Die Übergabe
sollte so sein:
Delphi-Quelltext
1:
| Response := form1.IdHTTP1.Post('http://www.chiller4fun.de/login.php?user='+username+'&passwort='+passwd+'&email='+mail); |
als Denkanstoss!
und die Abfrage in der login.php habe ich Dir auch geschrieben!
Natürlich kannst Du das (data)Array auch so senden,
Delphi-Quelltext
1:
| Response := form1.IdHTTP1.Post('http://www.chiller4fun.de/login.php?daten='+data); |
nur musst Du dann, in Deiner Login.php das Array auch aus einander nehmen und sie dort einzelnen Variablen zuordnen, um sie mit den sql abfragen zu vergleichen usw.
Gruss ALf
SvenAbeln - Fr 19.02.10 14:58
Auch wenn ich mich wiederhole:
SvenAbeln hat folgendes geschrieben : |
Und wieder zurück zum alten Script ;-)
Im Delphi schickst du aber immer noch diese Felder?
Delphi-Quelltext 1: 2:
| data.AddFormField('username', Edit1.Text); data.AddFormField('passwort', Edit2.text); |
Du Schickst also username und passwort
Im PHP verwendest du dann $user_login und $user_pw, denen wird hier aber kein Wert zugewiesen.
Quelltext 1: 2: 3: 4: 5: 6: 7: 8:
| <?php include("config.php"); $username = $user_login; $passwort = $user_pw; $result = mysql_query("SELECT * FROM scriptmaker_users WHERE username='".$user_login."'"); $row = mysql_fetch_array($result); if ($row["passwort"] != $user_pw) ?> |
|
Delete - Fr 19.02.10 14:59
man ich kapier jetz gar nichts mehr
könntest du des schnell meinen quellcode von delphi und mein php script anpassen
bitte
lg
Jakob_Ullmann - Fr 19.02.10 15:06
ALF so einfach ist das leider nicht, denn die Daten kannst du entweder als POST oder als GET übertragen. Wenn du sie als GET überträgst, so erscheinen sie in der URL. Dann darf
maier1990 seinen PHP-Code auch nochmal anpassen, weil er dann die Daten nicht mit
sondern mit
$_GET["username"] abfragen muss. Formulardaten werden aber normalerweise mit POST übertragen.
maier1990 mann dann frag nach, was du nicht verstehst, aber wir sind hier keine kostenlos-Arbeiter. Wenn du keine Eigeninitiative zeigen willst, weil du zu faul bist, frag in der Jobbörse. Aber erwarte nicht, dass du dabei was lernst. Bei den Markierungen was zu finden, sollte doch nicht mehr so schwer sein!?
Delete - Fr 19.02.10 15:16
Ich will es ja selber machen
Nur wie muss ich die Daten von Delphi ans Php script senden?
Passt da meins oder ist es besser Alf sein Vorschlag zu nehmen
und in Php script muss ich da jetz auch noch was ändern?
ALF - Fr 19.02.10 15:18
hi,
Jakob_Ullmann das mit Post und Get weiss ich doch. :wink:
Er sollte sich einfach mal anschauen wie die Übergabe sein muss!
sonst kommt er eh nicht weiter :lol:
Der Rest steht ja nun schon da, wie er es machen kann, soll usw. :lol:
Gruss ALf
Jakob_Ullmann - Fr 19.02.10 15:29
ALF hat folgendes geschrieben : |
hi, Jakob_Ullmann das mit Post und Get weiss ich doch. :wink:
Er sollte sich einfach mal anschauen wie die Übergabe sein muss! |
Gut, aber als Anfänger wird man da leicht verwirrt. Wenn man da nur von ein paar Tutorials lernt, weiß man das eventuell nicht. Aber ich bin eigentlich davon ausgegangen, dass du es weißt, das war auch eher an
maier1990 gerichtet.
| Zitat: |
sonst kommt er eh nicht weiter :lol:
Der Rest steht ja nun schon da, wie er es machen kann, soll usw. :lol: |
Wenn er ausschließlich Tutorials liest, wird er sowieso nicht weiter kommen. Jedenfalls habe ich diese Erfahrung gemacht, wenn nicht alles irgendwo aus einer Hand kommt, wird man immer irgendwo Lücken haben, weil ein Tutorial nie genau an das andere ansetzt. Das führt dazu, dass man diese Lücken in seinen Programmen mit Copy-and-Paste füllt und sich freut, das es geht. Solange man aber nicht versteht, warum es geht, wird man es nie wiedergeben oder auf andere Gegebenheiten anwenden können. Und das Gefühl hatte ich ziemlich oft in diesem Thread.
maier1990, was meinst du eigentlich, wozu
SvenAbeln orangene Markierungen gesetzt hat?
Delete - Fr 19.02.10 15:35
Weil hier anscheinend was Falsch isst
nur ich weis nicht was
Jakob_Ullmann - Fr 19.02.10 15:43
Dann schau dir die Stellen an und vergleiche sie. Lies dir den Text dazu auch durch. Merkst du was?
Sollte das nicht reichen, machst du ein bisschen Debugging. Schreib einfach sowas wie
C#-Quelltext
1:
| <tt>$username = <? echo "$username"; ?></tt> |
Delete - Fr 19.02.10 15:53
SvenAbeln hat folgendes geschrieben : |
| Im PHP verwendest du dann $user_login und $user_pw, denen wird hier aber kein Wert zugewiesen. |
Aber ich weise der variale $user_pw und $user_login einen wert zu mit:
username = $user_login;
$passwort = $user_pw;
oder etwa nicht?
Moderiert von
Narses: Zitat kenntlich gemacht.
ALF - Fr 19.02.10 15:56
maier1990 hat folgendes geschrieben : |
Weil hier anscheinend was Falsch isst
nur ich weis nicht was |
weil Du an 2 Baustellen bastels ohne die ein oder andere zu verstehn!
Darum nicht alles auf einmal!
Erst die übergabe richtig machen dann die Abfragen in der login.php testen wie ich sie dir schon gezeigt habe und eventl mit echo wie
Jakob_Ullmann es gschrieben hatt prüfen!
Dann weisst Du auch ob alles richtig ist!
Gruss Alf
Moderiert von
Narses: Quote-Tag-Syntax korrigiert.
Robert.Wachtel - Fr 19.02.10 15:56
Letzteres.
Und jetzt bitte noch mal mit den absoluten Grundzügen der Softwareentwicklung beschäftigen...
Delete - Fr 19.02.10 15:58
Aber was ist an meinen Delphi Quellcode fehlerhaft
ich find ihn nicht
Delete - Fr 19.02.10 16:07
ja des bringt mich aber auch nicht weiter weil ich des nicht check
Narses - Fr 19.02.10 16:14
Moin!
maier1990 hat folgendes geschrieben : |
Aber was ist an meinen Delphi Quellcode fehlerhaft
ich find ihn nicht |
:lol:
Ich denke, so hat er das nicht gemeint, war aber auch mein erster Gedanke... 8)
maier1990 hat folgendes geschrieben : |
| ja des bringt mich aber auch nicht weiter weil ich des nicht check |
An dieser Stelle solltest du dir mal Gedanken machen, ob das, was du da vor hast, vielleicht ganz einfach noch etwas zu schwer für dich ist? :nixweiss:
cu
Narses
Delete - Fr 19.02.10 16:16
Ja kann sein das es etwas zu schwer für mich ist und ich dazu noch zu wenig weis
aber ich brauch für mein anderes programm so ein login system.
Das registrieren klappt ja schon nur des login
und so codeschnipsel die iritieren mich immer voll :(
Jakob_Ullmann - Fr 19.02.10 16:22
maier1990 hat folgendes geschrieben : |
SvenAbeln hat folgendes geschrieben : | | Im PHP verwendest du dann $user_login und $user_pw, denen wird hier aber kein Wert zugewiesen. |
Aber ich weise der variale $user_pw und $user_login einen wert zu mit:
username = $user_login;
$passwort = $user_pw;
oder etwa nicht?
Moderiert von Narses: Zitat kenntlich gemacht. |
Betrachten wir ein Formular mit einem Edit
Edit1 und einem Label
Label1. Nun sei da noch ein Button
Button1, auf den geklickt wird, nachdem man im Edit die Eingabe "hallo" tätigt. Nun sieht die mit dem OnClick-Ereignis verlinkte Prozedur so aus:
Delphi-Quelltext
1: 2: 3: 4:
| procedure TfrmMain.Button1Click(Sender: TObject); begin Edit1.Text := Label1.Caption; end; |
Und du meinst, dass hinterher im Label1 "hallo" angezeigt wird? Da bin ich aber gespannt...
(EDIT: Noch schöner klappt das ganze, wenn man statt Label1.Caption eine lokale Variable nimmt, der man vorher noch keinen Wert zugewiesen hat.)
Und nur, weil ein Post- oder Get-Parameter username heißt, heißt das noch lange nicht, dass auch die Variable
$username diesen Wert hat. :roll:
Narses - Fr 19.02.10 16:26
Moin!
maier1990 hat folgendes geschrieben : |
Ja kann sein das es etwas zu schwer für mich ist und ich dazu noch zu wenig weis
aber ich brauch für mein anderes programm so ein login system. |
Kurz: du brauchst den Code, hast aber keine Ahnung, wie du es selbst schreiben sollst. In diesem Fall hilft nur ein Job-Angebot. Einen
entsprechenden Thread [
http://www.delphi-forum.de/viewtopic.php?t=97828] hast du ja schon erstellt. Wenn sich niemand findet, wird dein Angebot vielleicht nicht gut genug sein?
maier1990 hat folgendes geschrieben : |
| und so codeschnipsel die iritieren mich immer voll :( |
Du hast jetzt auf 6 Seiten in diesem Thread alles genannt bekommen, um die Probleme zu lösen, incl. Code(-teilen). Trotzdem kriegst du es nicht hin. Schlussfolgerung: du verstehst nicht, was da passiert. Das wird sich aber auch nicht mit fertigem Code ändern, im Gegenteil, deine Motivation, sich mal grundlegend mit der Materie zu beschäftigen wird noch geringer werden, läuft ja schon. :|
Zusammengefasst: so kommen wir hier nicht weiter. :!:
cu
Narses
Webo - Fr 19.02.10 16:29
maier1990 hat folgendes geschrieben : |
| Ja kann sein das es etwas zu schwer für mich ist und ich dazu noch zu wenig weis |
Dann unternimm dagegen doch was ... Wenn man mal Köpfchen einschaltet, dann hat man hier in diesem schon 6-Seiten füllenden Thema wirklich soooo viele Tipps, was man machen sollte, dass es quasi unmgöglich ist, die alle zu missachten.
maier1990 hat folgendes geschrieben : |
| und so codeschnipsel die iritieren mich immer voll :( |
Wenn dich das so irritiert, dann mach ein Angebot in der Job-Börse, dann bekommste den kompletten Code, aber dafür musste dann was bezahlen ;-)
Delete - Fr 19.02.10 16:31
@Jakob_Ullman
Des is mir schon klar wen ich den Button dan drück wird Label1 in des Edit eingetragen.
Jb angebot hab ich schon gemacht aber es findet scih niemand :(
Ich such eig. nur jemand der mir den Richtigen Quellcode für den Button und des php Script schreibt
Narses - Fr 19.02.10 16:33
Moin!
maier1990 hat folgendes geschrieben : |
Jb angebot hab ich schon gemacht aber es findet scih niemand :(
Ich such eig. nur jemand der mir den Richtigen Quellcode für den Button und des php Script schreibt |
Wenn das auf dieses Niveau hinausläuft, mache ich den Thread zu, das ist nur noch Betteln und hat nix mit Lernen zu tun. Du hast den Job in der entsprechenden Sparte bereits ausgeschrieben, wenn da nix kommt - Pech gehabt.
cu
Narses
Delete - Fr 19.02.10 16:36
Ich will es ja lernen nur hilft es mir nichts wen nur irgenden text orange markiert wird
wenigstens bisschen erklären wär hilfreich
Jakob_Ullmann - Fr 19.02.10 16:36
maier1990 hat folgendes geschrieben : |
@Jakob_Ullman
Des is mir schon klar wen ich den Button dan drück wird Label1 in des Edit eingetragen. |
Eben. Das heißt, der linken Seite wird die rechte Seite zugewiesen. Und in PHP ist das nicht anders.
Es bringt nichts, hier weiter rumzudiskutieren, wenn man weder von PHP, noch von Delphi Ahnung hat (und noch dazu von dem, was da abläuft).
| Zitat: |
| Jb angebot hab ich schon gemacht aber es findet scih niemand :( |
Dazu hat dir
Narses ja wohl geantwortet.
ALF - Fr 19.02.10 16:39
Für Dich zum Verständniss!
und nur als TEST
Delphi-Quelltext
1:
| Response := form1.IdHTTP1.Post('http://www.chiller4fun.de/login.php?user="meier1999"'); |
und in der login.php
Quelltext
1: 2: 3: 4:
| if(isset($_POST['user'])){ print "$_POST['user']"} else {print "nix angekommen"}; |
Hoffentlich alles richtig im code
Gruss Alf
Webo - Fr 19.02.10 16:39
Ich fasse für dich noch einmal zusammen, was du prüfen solltest:
- Trage etwas in die Datenbank ein, ohne das durch Variablen zu machen, also einen festen Wert. Wenn das funktioniert, dann weiter ...
- Trage etwas mit Variable ein, die du vorher in der php-Datei definierst, erstmal komplett ohne Delphi. Wenn das funktioniert, dann weiter ...
- Dann trage mit Delphi einen Wert in die DB ein, aber nur einen ... Wenn das funktioniert, dann weiter ...
- Dann erweiterst du deine Variabeln. Wenn es dann immer noch funktioniert, dann weiter ... ;-)
- Nun machst du das mit deinem Admin-Bereich, wenn das funktioniert, dann schätze dich glücklich !
So, und nach jedem Schritt prüfst du jetzt, ob es funktoniert. Und sofort, wenn ein Schritt nicht funktioniert, dann schaust du, was habe ich geändert und prüfst, woran es liegen könnte ... So kommst du alleine drauf, da bin ich mir sicher :idea:
Delete - Fr 19.02.10 16:42
ALF hat folgendes geschrieben : |
Für Dich zum Verständniss! und nur als TEST
Delphi-Quelltext 1:
| Response := form1.IdHTTP1.Post('http://www.chiller4fun.de/login.php?user="meier1999"'); |
und in der login.php
Quelltext 1: 2: 3: 4:
| if(isset($_POST['user'])){ print "$_POST['user']"} else {print "nix angekommen"}; | |
wen ich des jetzt so mache müsste es richtig sein oder?
Delphi-Quelltext
1:
| Response := form1.IdHTTP1.Post('http://www.chiller4fun.de/login.php?user_pw="Edit1.Text"'); |
C#-Quelltext
1: 2: 3: 4:
| if(isset($_POST['user_pw'])){ print "$_POST['user_pw']"} else {print "nix angekommen"}; |
Moderiert von
Narses: PHP-Code in CS-Tags gesetzt.
Webo - Fr 19.02.10 16:46
Delphi-Quelltext
1:
| Response := form1.IdHTTP1.Post('http://www.chiller4fun.de/login.php?user_pw="Edit1.Text"'); |
So würde das Passwort Edit1.Text lauten, du musst das etwa so machen:
Delphi-Quelltext
1:
| Response := form1.IdHTTP1.Post('http://www.chiller4fun.de/login.php?user_pw="' + Edit1.Text + '"'); |
Der String wird unterbrochen, um den Wert aus dem Edit auch zu übergeben, sonst passiert dass, was ich grade 2 Zeilen drüber schrieb
ALF - Fr 19.02.10 16:46
eh!!!
maier1990liest Du überhaupt die anderen Antworten
Schau mal was Du da in Delphi schon wieder falsch machst!!!
elundril - Fr 19.02.10 16:48
nein, weil sonst der wert "edit1.Text" zur website geschickt wird. Du willst aber den Wert der in der Variable mit dem Namen Text in der Komponente Edit1 zu Website schicken. deswegen:
Delphi-Quelltext
1:
| Response := form1.IdHTTP1.Post('http://www.chiller4fun.de/login.php?user_pw="' +Edit1.Text + '"'); |
lg elundril
Delete - Fr 19.02.10 16:52
Ja lese ich
wenn ich jetz webos Code ausführe kommt aber immer:
[Error] Unit1.pas(56): There is no overloaded version of 'Post' that can be called with these arguments
[Fatal Error] Project1.dpr(6): Could not compile used unit 'Unit1.pas'
ALF - Fr 19.02.10 16:55
das kommt von copy und paste :twisted:
ich gebs auf 8)
Gruss Alf
Xion - Fr 19.02.10 16:58
Hui, schon Seite 7 :D
ALF hat folgendes geschrieben : |
das kommt von copy und paste :twisted:
ich gebs auf 8) |
Also in sehe da keinen Fehler *blind ist*
Edit:
Ah, ok, nachdem ich meine Brille aufgesetzt hab seh ichs 8)
Da muss noch ein nil als Parameter mit würd ich mal sagen (da wo früher mal data stand ^^)
DonManfred - Fr 19.02.10 17:02
ALF hat folgendes geschrieben : |
Für Dich zum Verständniss! und nur als TEST
Delphi-Quelltext 1:
| Response := form1.IdHTTP1.Post('http://www.chiller4fun.de/login.php?user="meier1999"'); | |
Und was hat das für einen Zweck als Usernamen -->"meier1990"<-- zu übermitteln; also INKLUSIVE der "
WENN Du schon helfen willst, dann liefere wenigstens ordentlichen code. Mit solchen "Fallen" ist meier1990 massiv überfordert. Naja, leider ist er das scheinbar auch bei anderen konstruktiven Kommentaren. :-)
Für mich ist das Thema hier nun aber auch erledigt; ich hab dreimal meine hilfe angeboten aber nicht einmal wirklich eine sinnvolle Antwort erhalten oder gar den glauben, meier1990 hätte es verstanden. In meinen Augen ist meier1990 zu 100% Copy&Paste-Coder ohne auch nur das geringste von der Materie zu verstehen.
@meier1990: Wie ich es in ner PN ja schonmal sagte; KAUF DIR EIN ORDENTLICHES BUCH und lerne erstmal ein Jahr lang GRUNDLAGEN. DANN bist Du vielleicht so weit, das Du eine Kommunikation zwischen Delphi und PHP hinbekommst ohne gleich RIESIGE Sicherheitslücken aufzumachen. Aber ohne WISSEN, wie etwas funktioniert wirst du es nie hinbekommen. Du hast hier im Thread mind. schon 60 sinnvolle Hinweise und beispielcodes bekommen (auch von mir) aber Du lernst aus all den Antworten REIN GAR NICHTS.
Zu sagen "ich brauch einen login aber für mein Programm" ist keine Ausrede für Unwissenheit. LERNE die Grundlagen! LERNE, wie PHP arbeitet und dann DEBUGGE was das Zeug hält...
"Wer sich selber als Noob bezeichnet, der sollte die Finger davon lassen!
Wer daran etwas ändern möchte, der LERNT Grundlagen!"
Webo - Fr 19.02.10 17:04
Xion hat folgendes geschrieben : |
| Da muss noch ein nil als Parameter mit würd ich mal sagen (da wo früher mal data stand ^^) |
Mhh, das ist natürlich gut möglich, mir ist nur den fehlerhaft übergebene Text aus dem Edit aufgefallen und da ich hier grade kein Delphi zu Verfügung habe und auch nur nebenbei ins Forum reinschaue, habe ich evtl weitere Parameter nicht beachtet.
Xion - Fr 19.02.10 17:07
DonManfred hat folgendes geschrieben : |
"Wer sich selber als Noob bezeichnet, der sollte die Finger davon lassen!
Wer daran etwas ändern möchte, der LERNT Grundlagen!" |
Naja, oder man macht ein Job-Angebot. Wenn ich mich recht erinner war da sogar irgendwo eins, nur man hat nicht verstanden worum es genau geht ^^
DonManfred - Fr 19.02.10 17:08
elundril hat folgendes geschrieben : |
Delphi-Quelltext 1:
| Response := form1.IdHTTP1.Post('http://www.chiller4fun.de/login.php?user_pw="' +Edit1.Text + '"'); |
|
Wenn, dann bitte
Delphi-Quelltext
1:
| Response := form1.IdHTTP1.Post('http://www.chiller4fun.de/login.php?user_pw=' +Edit1.Text); |
die Anführungszeichen (") haben an der Stelle nichts verloren. Wenn der name bzw hier das passwort leerzeichen enthält dann müsste man das mit urlencode behandeln bevor man es POSTet und auf PHP-Seite dann entsprechend urlDEcoden...
elundril - Fr 19.02.10 17:17
kenn mich mit PHP nicht aus, wusste nicht das es ohne die " sein muss. scusi!
DonManfred - Fr 19.02.10 17:27
@elundril:
Alles, was nach user_pw= kommt (und vor dem nächsten &) wird (in diesem Fall) per _GET übergeben... Also auch die " die man php-seitig dann erst wieder entfernen müsste...
Vergleichbar:
Delphi-Quelltext
1:
| edit1.text := '"Username"'; |
Moderiert von
Narses: Delphi-Tags hinzugefügt
Delete - Fr 19.02.10 17:45
maier1990 bitte mit ai
naja ich werd mir die 7seiten nochmal in ruhe durchlesen
Delete - Fr 19.02.10 17:56
Herr Gott, erbarmt sich denn niemand, der ihm mal das Script und zum Script passenden Delphi Code schreibt? :mrgreen:
Jakob_Ullmann - Fr 19.02.10 17:59
Ja, ich weiß, eine kalte Welt hier im Forum. Und dann auch noch Geld dafür wollen - Kapitalismus ist doch was Schreckliches. :P
Xion - Fr 19.02.10 18:04
Hätte ich vielleicht sogar gemacht, hab aber überhaupt keine Ahnung von PHP :D Da muss mal wer andres für herhalten ^^ Ich mein, mit der Energie/Zeit die in diesem Topic steckt hätte man schon alles mögliche umsetzen können...
Edit: wie ist denn eigentlich der Status zur Zeit? Mit dem Usernamen/Passwort in der URL gehts jetzt, oder wo ist das Problem?
Ich glaub ich wiederhole das jetzt zum x-ten mal:
Wenn du als echo mal den Empfangenen UserName/Passwort und Passwort in der DB zurückgibst, dann sollte man doch das Problem finden können *wunder* man müsste nur mal wissen, was denn dann zurückgegeben wird...einfach mal ShowMessage(Response) machen.
ALF - Fr 19.02.10 18:38
DonManfred | Zitat: |
Und was hat das für einen Zweck als Usernamen -->"meier1990"<-- zu übermitteln; also INKLUSIVE der "
WENN Du schon helfen willst, dann liefere wenigstens ordentlichen code. |
War mit den Gedanken schon bei php print. sorry.
und geholfen hatt ja wohl keiner so richtig!
sonst hätte man ja wohl bemerken müssen das in Delphi die Übergabe an sein php
Delphi-Quelltext
1:
| form1.IdHTTP1.Post('http://www.chiller4fun.de/addons/login.php', data); |
einfach nur Falsch ist! Du also auch DonManfred! :wink:
Bitte kein Disput über Kritiken :wink:
Maier1999 ist halt so ein besonderer User :rofl:
Gruss Alf
Jakob_Ullmann - Fr 19.02.10 18:58
ALF hat folgendes geschrieben : |
Maier1999 ist halt so ein besonderer User :rofl:
Gruss Alf |
Stimmt, bei allen anderen wäre der Thread schon längst zu. :wink:
DonManfred - Fr 19.02.10 19:32
ALF hat folgendes geschrieben : |
sonst hätte man ja wohl bemerken müssen das in Delphi die Übergabe an sein php
Delphi-Quelltext 1:
| form1.IdHTTP1.Post('http://www.chiller4fun.de/addons/login.php', data); |
einfach nur Falsch ist! Du also auch DonManfred! :wink:
|
Okok... Ich möchte jetzt nicht einfach so behaupten das es so doch ginge... Ich hab grad wenig Zeit aber ich versuch mal eben ein kleines Beispiel zu machen...
20 minuten später....
Ohne mit der http-Komponente erfahrung zu haben (!!) habe ich Code hier aus diesem Thread verwendet um mal eben einen Login in meinem Forum nachzubilden...
Delphi-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:
| unit Unit3;
interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, IdBaseComponent, IdComponent, IdTCPConnection, IdTCPClient, IdHTTP, IdMultipartFormData;
type TForm3 = class(TForm) Edit1: TEdit; Edit2: TEdit; Label1: TLabel; Label2: TLabel; Button1: TButton; Memo1: TMemo; IdHTTP1: TIdHTTP; procedure Button1Click(Sender: TObject); procedure FormShow(Sender: TObject); private public end;
var Form3: TForm3;
implementation
{$R *.dfm}
procedure TForm3.Button1Click(Sender: TObject); var data: TIdMultiPartFormDataStream; begin if trim(edit1.Text) <> '' then begin if trim(edit2.Text) <> '' then begin data := TIdMultiPartFormDataStream.Create; try data.AddFormField('username', edit1.Text); data.AddFormField('passwort', edit2.text); Memo1.Lines.Text := form3.IdHTTP1.Post('http://www.hdro-die-schwarze-hand.de/maier1990.php', data); finally data.Free; end; end; end; end;
procedure TForm3.FormShow(Sender: TObject); begin memo1.Clear; end;
end. |
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:
| <?php $sqlhost = "******"; // Username und Passwort zum einloggen in den Datenbankserver $sqluser = "******"; $sqlpassword = "******"; // Name der Datenbank $sqldb = "******";
$conn = mysql_connect($sqlhost, $sqluser, $sqlpassword); mysql_select_db($sqldb, $conn);
header("Content-Type: text/plain"); if (isset($_REQUEST['username'])) $username = mysql_real_escape_string($_REQUEST['username']); else $username = ""; if (isset($_REQUEST['passwort'])) $passwort = mysql_real_escape_string($_REQUEST['passwort']); else $passwort = ""; if (($username != "") AND ($passwort != "")){ $result = mysql_query("SELECT * FROM bb1_users WHERE username='".$username."' AND password='".md5($passwort)."';") OR die("MySQL-Fehler: ".mysql_error()); $c = 0; while ($row = mysql_fetch_array($result)){ if ($row["password"] != md5($passwort)){ echo("Fehler beim Login"); exit; } else { $c++; if ( (int) $row["activation"] == 1){ echo("Erfolgreich Eingelogt"); } else if ( (int) $row["aktiviert"] == 0){ echo("Noch Nicht Aktiviert"); } else { echo "Sollte nicht auftreten :D"; } } } if ($c == 0){ echo "Login nicht möglich. Username und/oder Passwort falsch"; } } echo "\r\n"; print_r($_REQUEST); ?> |
Fazit: DOCH, das mit dem data-Array war so schon ok (glaube seite 4 hier im thread)! :D
Man muss es halt nur richtig machen.
Noch ein Edit für Alf:
Zur Erklärung... Du schriebst, das das mit dem data-Array falsch ist und er müsse es anders übergeben (script.php?var1=x&var2=y). Was du DA aber machst ist nichts anderes als einen Request per _POST abzusenden, die ganzen Werte jedoch per _GET zu übergeben.
Wenn du das SO machst, dann kannst du dir den POST sparen. Ein Loginformular, welches auf einer Seite eingebunden ist wirst du nicht überwinden können, wenn da eine genaue Prüfung auf POST oder GET erfolgt.
Mit meinem Beispiel hier werden die Werte wirklich als Post übermittelt. Nicht als GET in einem POST-aufruf.
Also: Ab in Die Ecke mit Dir! :-)
Ich programmiere erst 2 Jahre Delphi aber 12 Jahre lang mit PHP...
Jakob_Ullmann - Fr 19.02.10 19:42
Luckie hat folgendes geschrieben : |
| Herr Gott, erbarmt sich denn niemand, der ihm mal das Script und zum Script passenden Delphi Code schreibt? :mrgreen: |
:beer:
@ALF: Ich dachte, du weißt den Unterschied zwischen post und get?
ALF - Fr 19.02.10 20:14
Kurze Antwort: bin auf arbeit und kann nicht weitermachen:
Das globale Spezial-Array $_REQUEST enthält alle über die Mechanismen Cookie, POST oder GET übergebenen Variablen.
Aber Achtung: Diese Methode sollten Sie nur dazu verwenden, ein altes Programm schnell wieder flott zu bekommen. Es ist immer besser, gezielt via $_GET, $_POST oder $_COOKIE die Übergabemethode zu referenzieren.
und wie geht das DonManfred? solltest Du doch wissen!
und schon sind wir glaube ich wieder bei meiner Aussage oder?
bin erst 23:30 zu Hause :wink:
Gruss Alf
Delete - Fr 19.02.10 20:50
Thx donmanfred
Habs mir mal angeschaut aber is nur reines Wirwar muss ich mich heut abend wen ich allein
bin nochmal drüber sitzen.
Hab die Daten mal abgeändert und auf meins angepasst, aber wieso kommt immer folgender fehler?
Login nicht möglich. Username und/oder Passwort falsch
Array
(
[username] => 111
[passwort] => 111
Edit:
Und was passieren sollte wen user und pw richtig is des trag ich wohl hier ein oder:
Delphi-Quelltext
1: 2: 3:
| if trim(edit1.Text) <> '' then begin if trim(edit2.Text) <> '' then begin data := TIdMultiPartFormDataStream.Create; |
DonManfred - Fr 19.02.10 21:47
ALF hat folgendes geschrieben : |
Kurze Antwort: bin auf arbeit und kann nicht weitermachen:
Das globale Spezial-Array $_REQUEST enthält alle über die Mechanismen Cookie, POST oder GET übergebenen Variablen.
Aber Achtung: Diese Methode sollten Sie nur dazu verwenden, ein altes Programm schnell wieder flott zu bekommen. Es ist immer besser, gezielt via $_GET, $_POST oder $_COOKIE die Übergabemethode zu referenzieren.
|
Ja, das ist korrekt. Auf die schnelle (hatte ja keine Zeit) zusammen geschustert funktioniert es mit _REQUEST aber auch. Macht aber auch keinen Unterschied. Die DATEN wurden ja per _POST übermittelt. Aber ich ändere es gerne nochmal für dich ab, wenn du das möchtest.
Ändert aber nichts an der Tatsache, das du schriebst die vorgehensweise von maier wäre TOTAL FALSCH; was sie aber nicht ist. Sie funktioniert sehr wohl so wie gewollt und nur das wollte ich mit meinem Beispiel beweisen.
Aber bitte, hier eine Fassung die auf _POST prüft:
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:
| <?php $sqlhost = "****"; // Username und Passwort zum einloggen in den Datenbankserver $sqluser = "***"; $sqlpassword = "***"; // Name der Datenbank $sqldb = "***";
$conn = mysql_connect($sqlhost, $sqluser, $sqlpassword); mysql_select_db($sqldb, $conn);
header("Content-Type: text/plain"); if (isset($_POST['username'])) $username = mysql_real_escape_string($_POST['username']); else $username = ""; if (isset($_POST['passwort'])) $passwort = mysql_real_escape_string($_POST['passwort']); else $passwort = ""; if (($username != "") AND ($passwort != "")){ $result = mysql_query("SELECT * FROM bb1_users WHERE username='".$username."' AND password='".md5($passwort)."';") OR die("MySQL-Fehler: ".mysql_error()); $c = 0; while ($row = mysql_fetch_array($result)){ if ($row["password"] != md5($passwort)){ echo("Fehler beim Login"); exit; } else { $c++; if ( (int) $row["activation"] == 1){ echo("Erfolgreich Eingelogt"); } else if ( (int) $row["aktiviert"] == 0){ echo("Noch Nicht Aktiviert"); } else { echo "Sollte nicht auftreten :D"; } } } if ($c == 0){ echo "Login nicht möglich. Username und/oder Passwort falsch"; } } echo "\r\n"; print_r($_POST); ?> |
Die kannste genau so gut verwenden. An der funktionsweise ändert das nichts.
---
Moderiert von
Narses: Beiträge zusammengefasst---
maier1990 hat folgendes geschrieben : |
Thx donmanfred
Hab die Daten mal abgeändert und auf meins angepasst, aber wieso kommt immer folgender fehler?
Login nicht möglich. Username und/oder Passwort falsch
Array
(
[username] => 111
[passwort] => 111
|
Weil kein Datensatz gefunden wurde der passen würde. Username und/oder passwort sind halt falsch. Aber am besten zeigst du mal den aktuellen PHP-Quelltext, den Du verwendest... Ich möchte mich nicht drauf verlassen, das du meinen code korrekt angepasst hast!
maier1990 hat folgendes geschrieben : |
Und was passieren sollte wen user und pw richtig is des trag ich wohl hier ein oder:
Delphi-Quelltext 1: 2: 3:
| if trim(edit1.Text) <> '' then begin if trim(edit2.Text) <> '' then begin data := TIdMultiPartFormDataStream.Create; | |
Das, mein lieber, sind mal wieder GRUNDLAGEN der 1. Klasse!
Ich prüfe bei Button-Klick ob beide Eingabefelder befüllt sind und nur dann mache ich den Aufruf...
Deine Abfrage in delphi war, denke ich, doch so ok... Nur die Verbindung zwischen delphi und php war fehlerhaft bei Dir.
PS: Mein Script ist nur ein Beispiel INKL debug-ausgaben! Die zwei Zeilen
Quelltext
1: 2:
| echo "\r\n"; print_r($_POST); |
schmeisst du am besten raus. ABER poste erstmal aktuelle PHP- und Delphi-Code-Versionen...
BenBE - Fr 19.02.10 22:13
Ich sag bei dem PHP-Script mal SQL-Injection ...
Delete - Fr 19.02.10 22:16
Php Script:
C#-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:
| <?php $sqlhost = "xxxxxxxxx"; $sqluser = "xxxxxxxxx"; $sqlpasswort = "xxxxxxx"; $sqldb = "kd10135_db1";
$conn = mysql_connect($sqlhost, $sqluser, $sqlpasswort); mysql_select_db($sqldb, $conn);
header("Content-Type: text/plain"); if (isset($_REQUEST['username'])) $username = mysql_real_escape_string($_REQUEST['username']); else $username = ""; if (isset($_REQUEST['passwort'])) $passwort = mysql_real_escape_string($_REQUEST['passwort']); else $passwort = ""; if (($username != "") AND ($passwort != "")){ $result = mysql_query("SELECT * FROM scriptmaker_users WHERE username='".$username."' AND passwort='".md5($passwort)."';") OR die("MySQL-Fehler: ".mysql_error()); $c = 0; while ($row = mysql_fetch_array($result)){ if ($row["passwort"] != md5($passwort)){ echo("Fehler beim Login"); exit; } else { $c++; if ( (int) $row["activation"] == 1){ echo("Erfolgreich Eingelogt"); } else if ( (int) $row["aktiviert"] == 0){ echo("Noch Nicht Aktiviert"); } else { echo "Sollte nicht auftreten :D"; } } } if ($c == 0){ echo "Login nicht möglich. Username und/oder Passwort falsch"; } }
?> |
Delphi:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12:
| var data: TIdMultiPartFormDataStream; begin if trim(edit1.Text) <> '' then begin if trim(edit2.Text) <> '' then begin data := TIdMultiPartFormDataStream.Create; try data.AddFormField('username', edit1.Text); data.AddFormField('passwort', edit2.text); Memo1.Lines.Text := form1.IdHTTP1.Post('http://www.chiller4fun.de/login.php', data); finally data.Free; |
Vorher hab ich es mal so probiert:
Delphi-Quelltext
1: 2:
| if (Edit1.Text) = '238236' then Form2.Showmodal; |
lg
DonManfred - Fr 19.02.10 22:16
BenBE hat folgendes geschrieben : |
| Ich sag bei dem PHP-Script mal SQL-Injection ... |
Und was, glaubst Du, da injecten zu können? Ich gebe dir die Antwort: NICHTS!
---
Moderiert von
Narses: Beiträge zusammengefasst---
@maier1990: Das sieht für mich ok aus. Wenn da die Meldung kommt, das Username und/oder passwort falsch sind, dann sind sie das ODER das Passwort ist nicht, wie hier im thread beschrieben, mit md5 codiert in der db...
Evtl. magst du mal ein backup der tabelle mit phpmyadmin machen (MIT Daten) und mir das per pn senden. Dann werden wir evtl. schlauer...
Delete - Fr 19.02.10 22:29
Ja oke werd ich sofort machen
aber freut mich das ich wenigstens enimal ne kleine sache richtig machen konnte :-)
DonManfred - Fr 19.02.10 23:00
Netter Gag (klasse sogar :D) aber was willst Du damit ausdrücken?
Das der Name ->Robert'); DROP TABLE Students;<- zu einer SQL-Injection führen würde in obigem Script?
Möööp! Dickes Fettnäppchen...
Der Name ->Robert'); DROP TABLE Students;<- würde durch das mysql_real_escape_string zu ->Robert\'); DROP TABLE Students;<- und DAS, mein lieber, kann durchaus in dem SQL so an die DB gesendet werden. Ok, den User gibt es so nicht aber das verhalten des Scripts würde dadurch nicht beeinflusst (es wird halt kein passender User gefunden). Auch nicht, wenn man table students durch die richtige Tabelle ersetzen würde.
Und nu?
BenBE - Fr 19.02.10 23:15
Ich weiß, warum ich Prepared Statements in PHP einsetze: Da sind solche sachen eindeutig.
Um deine Frage aber dennoch zu beantworten: Es gab da (auch in mysql_real_escape_string) durchaus schon Bugs, wo der nicht getan hat, was er tun sollte und man in gewissen Konstellationen da durchaus auch mit diesem Source injekten hätte können.
Mal ganz davon abgesehen, dass der PHP-Source wie daherge
krotzt aussieht ...
€: Konkret waren das soweit ich das überblicke glaube
http://bugs.mysql.com/bug.php?id=41730 und/oder
http://bugs.mysql.com/bug.php?id=22243 Wirklich schützt es aber nur, wenn man konsequent Befehl und Daten voneinander trennt. Daher auch mein expliziter Hinweis hier.
DonManfred - Fr 19.02.10 23:32
BenBE hat folgendes geschrieben : |
Um deine Frage aber dennoch zu beantworten: Es gab da (auch in mysql_real_escape_string) durchaus schon Bugs, wo der nicht getan hat, was er tun sollte und man in gewissen Konstellationen da durchaus auch mit diesem Source injekten hätte können.
Mal ganz davon abgesehen, dass der PHP-Source wie dahergekrotzt aussieht ... |
Ich hab den Code von maier übernommen und den nur leicht erweitert. Für mich würd ich da einiges anders machen.
Aber danke für den Hinweis; bin bisher aber eigentlich immer gut gefahren mit mysql_real_escape_string
Delete - Fr 19.02.10 23:37
Mist, verloren. Ich hatte auf nicht unter 10 Thread Seiten gewettet.
Delete - Sa 20.02.10 00:10
@ Luckie
Es gibt noch Hoffnung für dich ich hab schon wieder ein Problem weis aber nich ob des in diesen oder in einen neuen Thread gehört
Folgendes:
Ich benutze dank DonManfred diesen Php Code:
C#-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:
| <?php $sqlhost = "dedi670.your-server.de"; $sqluser = "kd10135_1"; $sqlpasswort = "U42CHrx8"; $sqldb = "kd10135_db1";
$conn = mysql_connect($sqlhost, $sqluser, $sqlpasswort); mysql_select_db($sqldb, $conn);
header("Content-Type: text/plain"); if (isset($_REQUEST['username'])) $username = mysql_real_escape_string($_REQUEST['username']); else $username = ""; if (isset($_REQUEST['passwort'])) $passwort = mysql_real_escape_string($_REQUEST['passwort']); else $passwort = ""; if (($username != "") AND ($passwort != "")){ $result = mysql_query("SELECT * FROM scriptmaker_users WHERE username='".$username."' AND passwort='".md5($passwort)."';") OR die("MySQL-Fehler: ".mysql_error()); $c = 0; while ($row = mysql_fetch_array($result)){ if ($row["passwort"] != md5($passwort)){ echo("Fehler beim Login"); exit; } else { $c++; if ( (int) $row["aktiviert"] == 1){ echo("Erfolgreich Eingelogt"); } else if ( (int) $row["aktiviert"] == 0){ echo("Noch Nicht Aktiviert"); } else { echo "Sollte nicht auftreten :D"; } } } if ($c == 0){ echo "Login nicht möglich. Username und/oder Passwort falsch"; } }
?> |
Mein Delphi Quellcode sieht so aus:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13:
| var data: TIdMultiPartFormDataStream; begin if trim(edit1.Text) <> '' then begin if trim(edit2.Text) <> '' then begin data := TIdMultiPartFormDataStream.Create; try data.AddFormField('username', edit1.Text); data.AddFormField('passwort', edit2.text); Memo1.Lines.Text := form1.IdHTTP1.Post('http://www.chiller4fun.de/login.php', data); finally data.Free; end; |
Bei Donmanfred klappt es Erfolgreich.
Ich wen mich versuch einzuloggen kommt immer folgender fehler:
Login nicht möglich. Username und/oder Passwort falsch
DonManfred hat meinen Quelltext angeschaut und sagte das sei alles richtig so und wens er bei ihm macht ginge es.
Wisst ihr wieso es nicht geht?
lg
Delete - Sa 20.02.10 00:28
maier1990 hat folgendes geschrieben : |
| Wisst ihr wieso es nicht geht? |
Nein, aber du könntest es selber rausfinden, in dem du den Code einfach mal debuggst.
ALF - Sa 20.02.10 00:30
Du
DonManfred HAST JA RECHT mit $_POST und seiner Übergabe in Delphi.
Es sollte Maier1999 zum Denken und lesen anregen, wie PHP überhaupt funktioniert, via php Hilfe usw.
Dort steht alles drin mit Beispiele! er will aber nicht.
Du gibst ihn Code mit $_REQUEST und
er macht wieder COPY & PASTE ohne zu lernen.
Später schreibt er, Seite wurde gehackt usw. und versteht nicht warum!
Er will halt ein Haus bauen ohne Fundament und Wände.
Er wird auch nicht verstehen warum man $_REQUEST nicht nehmen soll!
Egal was wir ihm anbieten, er will nur fertigen Code. Ob er richtig ist oder nicht!
Kaum hatt er einen C&P kommt,
irgendwas funct nicht!
Unsere Bemühungen fruchten nicht bei ihm, schade :?
Gruss Alf
Xion - Sa 20.02.10 00:33
ALF hat folgendes geschrieben : |
| Unsere Bemühungen fruchten nicht bei ihm, schade :? |
Warum machst du denn nicht das Jobangebot von ihm? Verlangst paar Euros und alle währen zufrieden.
Delete - Sa 20.02.10 00:35
Es is ja so das es bei DonManfred erfolgreich geht mit genau den gleichen
php quellcode und php script wie ich habe
Xion - Sa 20.02.10 00:38
Damit ist ja eigentlich klar, dass wir nichts machen können...da es ja an sich funktioniert. Du musst halt selbst mal gucken wo der Fehler ist, indem du eben Werte mit ausgibst / Breakpoints machst usw...debuggen halt
Delete - Sa 20.02.10 00:42
ja aber wen es woanders geht müsst es doch bei mir auch gehn
COMMANDER86 - Sa 20.02.10 00:45
maier1990 hat folgendes geschrieben : |
Es is ja so das es bei DonManfred erfolgreich geht mit genau den gleichen
php quellcode und php script wie ich habe |
maier1990 hat folgendes geschrieben : |
| ja aber wen es woanders geht müsst es doch bei mir auch gehn |
Korrekt. So sollte es sein. Das kann nur bedeuten, dass DonManfred etwas hat, was Du nicht hast. Vielleicht nur eine winzige Einstellung irgendwo. Xion und Luckie haben vollkommen recht: Das können wir hier nicht reproduzieren. Bloß Deine Ausgaben vom Debbuging bringen das an dieser Stelle weiter.
LG
Fabian
Xion - Sa 20.02.10 00:46
nö, nicht unbedingt. Was meinst du warum die Software-Firmen unmengen verschiedene Rechner mit verschiedenen Betriebssystemen rumstehen haben zum Testen?
Wie gesagt, ich kenne mich mit PHP nicht aus, aber vermutlich kannst du da einiges am Server einstellen und ruck zuck geht dann irgendwas nicht mehr. Dazu muss man sich dann halt auskennen um rauszufinden woran es liegt und ferndiagnose ist dann meist auch schwer.
//Du warst nur schneller weil mein Server mich dauernd ausm Forum kickt und ich mich erst anmelden musste :motz: ;)
Marc. - Sa 20.02.10 00:51
maier1990 hat folgendes geschrieben : |
C#-Quelltext 1: 2: 3: 4: 5: 6: 7:
| <?php $sqlhost = "dedi670.your-server.de"; $sqluser = "kd*******"; $sqlpasswort = "U4******"; $sqldb = "kd*******"; | |
In diesem Fall wäre eine SQL-Injection absolut überflüssig. :shock:
Ich hoffe diese Daten gehören zu keiner schützenswerten MySQL-DB, ich kann mich damit nämlich problemlos einloggen...
COMMANDER86 - Sa 20.02.10 00:54
Xion hat folgendes geschrieben : |
| nö, nicht unbedingt. Was meinst du warum die Software-Firmen unmengen verschiedene Rechner mit verschiedenen Betriebssystemen rumstehen haben zum Testen? |
Wenn nicht gerade der Kunde die Testabteilung übernimmt. Da gibt es ja auch ein paar Paradebeispiele.
Xion hat folgendes geschrieben : |
| //Du warst nur schneller weil mein Server mich dauernd ausm Forum kickt und ich mich erst anmelden musste :motz: ;) |
Das ich mit der 1k-Leitung mal jemanden toppe... cool. ^^ ;)
Sorry 4 OT & LG
Fabian
Delete - Sa 20.02.10 00:56
ne is nich so willd is fast nix mehr oben auf db
aber die anderen des mit dem server wen bisschen was umgestellt wurde das es
dan nicht mehr gehen könnte kapier ich ja, aber DonManfred hat des Programm nachgebaut mit den gleichen Quellcode wie ich und des gleiche Php Script und hats über meine Db probiert
deswegen verstehe ich es ned
COMMANDER86 - Sa 20.02.10 00:58
maier1990 hat folgendes geschrieben : |
ne is nich so willd is fast nix mehr oben auf db
aber die anderen des mit dem server wen bisschen was umgestellt wurde das es
dan nicht mehr gehen könnte kapier ich ja, aber DonManfred hat des Programm nachgebaut mit den gleichen Quellcode wie ich und des gleiche Php Script und hats über meine Db probiert
deswegen verstehe ich es ned |
Jetzt mal ganz blöd... ich kenne mich mit solchen Verbindungen nicht wirklich aus. Aber könnte ein Virenscanner / Firewall da irgendwas mit zu tun haben? Mal so als Frage in die Runde...
LG
Fabian
elundril - Sa 20.02.10 00:59
Klar könnte. Wäre ja ne scheiß firewall wenn man trotzdem connections ins internet aufbauen kann.
lg
ALF - Sa 20.02.10 01:00
Xion hat folgendes geschrieben: |
| Warum machst du denn nicht das Jobangebot von ihm? Verlangst paar Euros und alle währen zufrieden. |
und er stellt sich, wo auch immer, mit seinem Prog vor!?.
Ohne verstanden zu haben was er codet oder von anderen bekommt!
Ist ja in fast allen seiner Threads zu erkennen.
Er macht einfach zu viel auf einmal, siehe sein "Mail versenden ohne Outlook"
ER hatt das eine nicht kapiert und posted schon wieder einen neuen Fehler!
Wie will er da was lernen, mit fertigen Code von uns!?
Ist das unsere Hilfe :?:
Glaube ich nicht :wink:
Gruss Alf
Moderiert von
Narses: Zitat-Syntax angepasst.
Delete - Sa 20.02.10 01:03
Habe virenscanner ausgeschaltet aber der war nicht schuld daran.
Und mit dem Mail client hab ich ja gecheckt.
Delete - Sa 20.02.10 01:04
maier1990 hat folgendes geschrieben : |
ne is nich so willd is fast nix mehr oben auf db
aber die anderen des mit dem server wen bisschen was umgestellt wurde das es
dan nicht mehr gehen könnte kapier ich ja, aber DonManfred hat des Programm nachgebaut mit den gleichen Quellcode wie ich und des gleiche Php Script und hats über meine Db probiert
deswegen verstehe ich es ned |
Was will uns der Autor damit sagen? Hat das jemand verstanden? Ich nicht.
Xion - Sa 20.02.10 01:08
maier1990 hat folgendes geschrieben : |
| Habe virenscanner ausgeschaltet aber der war nicht schuld daran. |
Was kommt denn beim Server an? Das fragen wir schon seit paar Seiten...das können wir nicht wissen ^^
elundril - Sa 20.02.10 01:10
Luckie hat folgendes geschrieben : |
maier1990 hat folgendes geschrieben : | ne is nich so willd is fast nix mehr oben auf db
aber die anderen des mit dem server wen bisschen was umgestellt wurde das es
dan nicht mehr gehen könnte kapier ich ja, aber DonManfred hat des Programm nachgebaut mit den gleichen Quellcode wie ich und des gleiche Php Script und hats über meine Db probiert
deswegen verstehe ich es ned |
Was will uns der Autor damit sagen? Hat das jemand verstanden? Ich nicht. |
tja, generation ADHS und SMS. für ganze sätze zu faul und für grammatik zu cool.
Also:
Es würde nichts machen wenn einer auf dieser Datenbank mit diesen Zugangsdaten herumfuhrwerkt da diese nur zu testzwecken dient. Auf dem echten Server kann man sich dann nicht mehr mit diesen Daten einloggen.
Das Problem ist, dass wenn ich den Quellcode von DonManfred so ändere das es auf dem richtigen Server laufen soll, funktioniert es nicht. Und ich verstehe nicht warum.
Mfg,
die zwischengeneration ;)
Xion - Sa 20.02.10 01:13
sicher? Also ich versteh da was ganz andres aus dem Absatz...
Der Code geht wenn ihn DonManfred ausführt sogar auf dem selben Server, aber sobald Maier1990 ihn verwendet geht er nicht.
COMMANDER86 - Sa 20.02.10 01:17
maier1990 hat folgendes geschrieben : |
| Habe virenscanner ausgeschaltet aber der war nicht schuld daran. |
Okay. Firewall auch?
maier1990 hat folgendes geschrieben : |
| Und mit dem Mail client hab ich ja gecheckt. |
Das gehört zu dem Anti-Outlook-Thread, oder?
ALF hat folgendes geschrieben : |
[...]
Er macht einfach zu viel auf einmal, siehe sein "Mail versenden ohne Outlook"
ER hatt das eine nicht kapiert und posted schon wieder einen neuen Fehler!
Wie will er da was lernen, mit fertigen Code von uns!?
Ist das unsere Hilfe :?:
Glaube ich nicht :wink: [...] |
@maier1990:
Wie Du siehst, ist es hier nicht üblich fertige Lösungen zu präsentieren. Es ist eher die Intention den Lerneffekt, den "Aha-Moment" zu fördern. Deswegen bekommst Du die zahlreichen Hinweise und Beispiele... Codeschnipsel, die Dich immer wieder vor ein Rätsel stellen. Jeder hier kann sicherlich nachvollziehen, dass Du gerne einen Erfolg erzielen möchtest und das Programm fertig stellen willst.
In diesem Thread gab' es, für meine Begriffe, ziemlich wenige Hinweise auf Suchmaschinen, Hilfefunktionen und die Forensuche. Auch wenn ich mich nun auf dünnen Eis hier bewege, wenn ich Folgendes ausspreche: Es gibt auch noch andere Foren... das heißt nicht, dass Du Cross-Postings erstellen sollst. Aber Du bist sicherlich nicht alleine auf dieser Welt mit diesem Problem.
Du kommst immer wieder einen Schritt weiter: Schau' mal, wo Du gestern warst. Was wir Dir mitgeben wollen ist ein Stück weit Selbstständigkeit. Die Selbstständigkeit Fehler zu finden und zu beheben. Es scheint so, als würdest Du auf Lösungsvorschläge warten. Wenn Du einen bekommst, probierst / kopierst Du es aus und sagst geht nicht... und dann wartest Du wieder auf eine Antwort.
Sorry... das wollte ich einfach mal loswerden. Bitte nicht böse sein.
Xion hat folgendes geschrieben : |
sicher? Also ich versteh da was ganz andres aus dem Absatz...
Der Code geht wenn ihn DonManfred ausführt sogar auf dem selben Server, aber sobald Maier1990 ihn verwendet geht er nicht. |
Das war auch meine Interpretation.
LG
Fabian
Delete - Sa 20.02.10 01:19
Ja ich versteh des schon und werde auch in zukunft mehr eigeninitative zeigen
und mein problem ist so wie Xion schildert.
lg
elundril - Sa 20.02.10 01:20
PWND!!! SEITE 10! :D YOU CAN NEVER BE THIS AWESOME!!! :mrgreen:
Sorry for OT
COMMANDER86 - Sa 20.02.10 01:24
elundril hat folgendes geschrieben : |
PWND!!! SEITE 10! :D YOU CAN NEVER BE THIS AWESOME!!! :mrgreen:
Sorry for OT |
WTF!? Geile Nummer! XD
maier1990 hat folgendes geschrieben : |
Ja ich versteh des schon und werde auch in zukunft mehr eigeninitative zeigen
und mein problem ist so wie Xion schildert.
lg |
Okay... dann bleibt mir die Frage, wie Du "in Zukunft" definierst.
Aber mal OT zur Seite: Firewall?
LG
Fabian
Delete - Sa 20.02.10 01:27
Zukunft heisst bei den nächsten Threads
Firewall hab ich keine an
COMMANDER86 - Sa 20.02.10 01:32
maier1990 hat folgendes geschrieben : |
| Zukunft heisst bei den nächsten Threads |
Also nicht in diesem? ;)
maier1990 hat folgendes geschrieben : |
| Firewall hab ich keine an |
Okay... sorry, wenn ich so penibel nachfrage...: Windows Firewall auch?
LG
Fabian
Delete - Sa 20.02.10 01:33
Ja kein ding darfste schon ;-)
Windows Firewall ist bei mir immer aus
Kurz und Bündig. ja ist aus
COMMANDER86 - Sa 20.02.10 01:51
maier1990 hat folgendes geschrieben : |
Ja kein ding darfste schon ;-)
Windows Firewall ist bei mir immer aus
Kurz und Bündig. ja ist aus |
Okaaaay... dann fackeln wir mal die grundsätzlichen Fehlerquellen ab, die so ein Windows-Rechner bereit hält. Die lassen sich recht einfach ausklammern... also:
1. Manche Komponenten (ich kenne die nicht, die Du verwendest... leb' da in einer anderen Welt ;) ) nutzen Instanzen vom IE. Browser Cache mal geleert? Temporäre Internetdateien gelöscht, Verlauf etc... (alles vom IE) alles mal cleanen. Das Dingen speichert mehr, als man glaubt.
2. Auch wenn es unwahrscheinlich ist. Vielleicht ist irgendwas im Wege... Outlook, ICQ, MSN... einfach mal alles ausschalten, was eine Dauerverbindung ins Netz herstellen kann (und es evt. auch tut).
4. Rechner mal neu gestartet? "Reboot - tut gut." Windows ist eigen.
8. Überleg' mal, ob Du an Deinem System irgendwelche Einstellungen vorgenommen hast, die nicht jeder macht... irgendwas utopisches... exotisches... irgendwas, was ein Insider ist, um das letzte aus dem Stück Tütenblech rauszuholen... irgendwas, was der Kollege, bei dem es funktioniert, nicht haben könnte?
16. Netzwerkeinstellungen? Hast Du einen DNS eingetragen, der nicht zu Deinem Provider gehört? Proxy-Einstellungen?
Im Zweifelsfall mal nach jeden Versuch neu starten... Windows ist eigen.
PS: Meine Wurzeln liegen im BenutzerService... First-Level-Support... was ich mit 98% Sicherheit sagen kann, ist das der Neustart eines Windows-Rechner's (egal, welche Version) 90% aller Probleme behebt. ;)
LG und viel Erfolg!
Fabian
Delete - Sa 20.02.10 01:54
Ok Dankeschön werde ich gleich machen
BenBE - Sa 20.02.10 02:02
Also soweit ich das Sehe, funktioniert das Script ja nicht mal, wenn man es direkt im Browser aufruft ...
Delete - Sa 20.02.10 02:20
@commander
ich hab jetzt alle deine punkte befolgt leider ohne erfolg.
Es kommt immer noch der gleiche Fehler
zu Punkt 8. und 16.
Nee ich hab an meinen System nichts verändert ich habs auch auf meinen Netbook Probiert und auf den Pc von meinen Dad da ich dachte es könnte evtl. am Betriebssystem liegen.
Aber auch leider ohne erfolg.
@Benbe
wieso sollte es nicht funktionieren?
lg
COMMANDER86 - Sa 20.02.10 02:24
Hätt' ja klappen können... BenBe's Antwort ließ mich einen Misserfolg allerdings schon vermuten.
Hast Du das mal mit einem lokalen Webserver zB (XAMPP) probiert?
Delete - Sa 20.02.10 02:31
Was heißt das genau? Das das php script falsch ist oder?
commander ne hab ich noch nicht gemacht
COMMANDER86 - Sa 20.02.10 02:33
BenBE hat folgendes geschrieben : |
| [...]Ich erhalte aber eine weiße Seite. |
Dito. (IE 7 - Win Vista Bus. 32b)
//EDIT:
maier1990 hat folgendes geschrieben : |
| commander ne hab ich noch nicht gemacht |
Das kann Dir helfen: So kannst Du eine gleichzeitige Testumgebung schaffen, mit deren Hilfe, Du Fehler evt. schneller finden kannst. Dann sind zumindest die Einstellungen vom Webserver nicht vorhanden.
maier1990 hat folgendes geschrieben : |
| Was heißt das genau? Das das php script falsch ist oder? |
Maybe... wenn es bei Don (hab' den Rest vergessen *sry*) allerdings funktioniert, ist das eher unwahrscheinlich.
Du solltest mal gucken, was ein nicht editierter, frisch aufgesetzter Webserver, also eine lokale Installation von XAMPP, dazu sagt. Dann musst Du natürlich die Pfade für den Test anpassen.
LG
Fabian
Delete - Sa 20.02.10 02:44
Ja oke werd ich machen aber erst mal bisschen Abschalten
Ich berichte euch dan wieder ^^
ALF - Sa 20.02.10 02:46
Habt ihr euch mal im explorer/ansicht/quelltext angeschaut was er in sein code drin stehen hatt, wenn ihr seine Seite aufruft!
oder bin ich da blind!!!
Gruss Alf
BenBE - Sa 20.02.10 03:00
Jaja, bei soviel Webhostingkompetenz.de kein Wunder :P
COMMANDER86 - Sa 20.02.10 03:10
ALF hat folgendes geschrieben : |
Habt ihr euch mal im explorer/ansicht/quelltext angeschaut was er in sein code drin stehen hatt, wenn ihr seine Seite aufruft!
oder bin ich da blind!!! |
Quelltext
1: 2: 3: 4:
| <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <HTML><HEAD> <META content="text/html; charset=windows-1252" http-equiv=Content-Type></HEAD> <BODY><PRE></PRE></BODY></HTML> |
Guter Einwand... die Seite ist irgendwie verdammt leer...
Delete - Sa 20.02.10 04:18
Jetzt will ich auch mal. :P
Mal was ganz einfaches: Einfach nur ein PHP Script, welches eine Variable per Post entgegen nimmt und einfach wieder ausgibt mit etwas Text drumherum. Und dazu der nötige Delphi Code um die Formulardaten zu senden.
Ziel Script auf dem Server
login.php:
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10:
| <?php $username = htmlspecialchars($_POST['username']);
if (isset($username)){ echo "Hallo $username. Wie geht es dir?"; } else{ echo "Variable nicht gesetzt"; } ?> |
Und der zugehörige Delphi Code:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19:
| procedure TForm4.Button1Click(Sender: TObject); var data: TStringList; s: String; begin data := TStringList.Create; try data.Values['username'] := 'Erwin'; try s := IdHTTP1.Post('http://www.michael-puff.de/login.php', data); ShowMessage(s); except on E: Exception do ShowMessage('Fehler: ' + E.Message); end; finally data.Free; end; end; |
So. DAS und nur DAS versuchst du jetzt mal zum Laufen zu bringen. Und zwar komplette inklusive der Fehlerbehandlung, damit du siehst, was passiert, wenn ein Fehler auftritt. Wenn kein Fehler auftritt, sollte der Dialog den Text "Hallo Erwin. Wie geht es dir?" ausgeben. Ansonsten entweder "Variable nicht gesetzt" oder eine Exception Meldung von den Indys, wenn schon das Senden fehlgeschlagen ist. (Genau das ist nämlich das Problem aller bisher geposteten Beispielcodes: Die fehlende Fehlerbehandlung. Und dann kommt es natürlich zu Fehlerbeschreibungen wie: "Funktioniert nicht".)
Wenn das klappt, dann meldest du dich wieder hier. Der Code ist getestet und funktioniert mit dem Script auf meinem Webspace. Auch die Fehlerbhandlung ist getestet und funktioniert.
http://www.michael-puff.de/Developer/Delphi/Code-Snippets/IdHTTP_Post.shtml
PS: Ich habe das zum ersten Mal mit Delphi und den Indys gemacht. Benötigte Zeit: 15 Minuten inklusive Google Suche. :? (Ich weiß, ich werde alt.)
DonManfred - Sa 20.02.10 14:04
Also dann will ich auch noch mal.
Also: Ich habe mir gestern von maier sein komplettes Projekt samt db-dump schicken lassen und php-script.
Ich habe hier sein Projekt mit delphi2006 kompiliert. Anfänglich war noch ein falscher Name in der php aber nachdem das behoben wurde klappte es dann auch bei mir. Am Delphi-Quelltext hab ich nichts verändert, nur kompiliert.
Zu euren anregungen:
- firewall: Kann nicht schuld sein, weil definitiv eine Antwort vom PHP-Script im Programm ankommt. Und zwar kommt eine Meldung die nur dann erscheint, wenn Username UND Passwort nicht leer sind und beide über _POST übermittelt wurden...
- Virenscanner: siehe firewall
Der Unterschied liegt darin, das er Delphi 7 und ich 2006 einsetze.
Das war dann der Zeitpunkt an dem ich mit meinem Latein am ende war... Der PHP-Code und Delphi-Code passte zusammen, bei ihm schienen aber scheinbar nicht genau das eingegebene per Post übermittelt worden zu sein, bei mir schon.
Arbeiten die Indy-Komponenten unter Delphi 7 anders als unter 2006? Also codieren die den Text irgendwie anders? Der verwendete username und passwort waren jeweils
test123. Umlautkonvertierung kann also nicht das Problem sein.
@maier:
Pack in die PHP-Datei ans Ende (zwischen "}" und "?>") nochmal die Zeilen:
Quelltext
1: 2: 3: 4:
| echo "\r\n"; print_r($_POST); print_r($_GET); print_r($_REQUEST); |
und logge dich dann nochmal ein. Poste dann hier mal den kompletten Inhalt der memo1 (brauchst auch nichts ausXXsen, Daten sind hier ja nun bekannt :D)
Delete - Sa 20.02.10 17:16
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16:
| Login nicht möglich. Username und/oder Passwort falsch Array ( [username] => 1212 [passwort] => 1212
) Array ( ) Array ( [username] => 1212 [passwort] => 1212
) |
Hey
Habs nun so gemacht wie du beschrieben hast DonManfred aber mehr al wie oben steht wird nicht angezeigt
Lg
BenBE - Sa 20.02.10 17:18
Versuch mal statt 1212/1212 als Login Username 123 mit Passwort 123. Vielleicht hilft das ja ;-)
Zeig ggf. auch mal die Zwischenschritte deines Scripts mit an? Was sagt er da bzgl. Username und Passwort? Welche Datensätze findet er?
DonManfred - Sa 20.02.10 17:27
Wieso 1212? Ist der Username und Passwort in der db nicht test123?? *verwirrt*
Delete - Sa 20.02.10 17:43
ja sorry hab mich neu registriert und wollt es testen
user:1212
pw:1212 geht nicht
user:123
pw:123 geht nicht
user:test123
pw:test123 geht auch nicht
lg
Delete - So 21.02.10 13:47
Hi
@Luckie
Wenn ich dein Beispiel mache von Seite 10 und ich in Delphi auf den Button drücke,
wird der gesamte Code vom Php Script ausgegeben.
Also der:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10:
| <php $username = htmlspecialchars($_POST['username']);
if (isset($username)){ echo "Hallo $username. Wie geht es dir?"; } else{ echo "Variable nicht gesetzt"; } ?> |
Lg
Jakob_Ullmann - So 21.02.10 15:07
Du müsstest schon <?php statt <php schreiben. :wink:
:arrow: Das kommt von bloßem Copy-and-Paste!
Delete - So 21.02.10 15:23
:(
Jetz geht es. Wen ich jetzt den Button drücke kommt Hallo Erwin wie geht es dir?
Lg
elundril - So 21.02.10 15:25
:shock: Amazing, es funktioniert. So und mit der Grundlage kannst du ja jetzt weiterarbeiten, oder?
lg elundril
Delete - So 21.02.10 15:27
Ne eig. nicht so gut kenn ich mich nicht aus :(
ALF - So 21.02.10 16:10
Füge nun alle anderen Felder mit ein und prüfe ob sie zurückgelmeldet werden!
Wenn ja, hast Du alles richtig gemacht! :wink:
Und erst dann gehts mit der Datenbank weiter nicht vorher!!!!!
Gruss ALf
Xentar - So 21.02.10 16:12
ALF hat folgendes geschrieben : |
| Und erst dann gehts mit der Datenbank weiter nicht vorher!!!!! |
Tja, anscheinend nicht ;)
http://forum.delphi-treff.de/showthread.php?t=28421
Und mit keinem Wort erwähnt, dass das eigentlich nur von euch hier zusammenkopiert ist..
ALF - So 21.02.10 16:16
Ich wert nicht mehr :!:
Soll ich :cry: :cry: oder :autsch: oder :rofl:
Hilfeeeeeee
Gruss ALf
Delete - So 21.02.10 16:52
Jakob_Ullmann hat folgendes geschrieben : |
Du müsstest schon <?php statt <php schreiben. :wink:
:arrow: Das kommt von bloßem Copy-and-Paste! |
Ja, aber der Fehler lag bei mir. Allerdings hätte man es auch selber sehen könne, wenn man sich nur ein klein wenig mit PHP auskennt.
Jakob_Ullmann - So 21.02.10 17:22
Luckie: Genau das meine ich. Und an der Ausgabe ist doch eigentlich schon zu vermuten, dass das Script entweder nicht als PHP erkannt wird oder dass es beim Webspace Probleme gibt. Zuerst geht man doch aber davon aus, dass mit dem Code irgendwas nicht stimmt und da auch PHP keinen Error ausgibt, kann das Problem nur an einer Stelle sein. Und es wurde so oft korrekt hier gepostet und er hat ja eine ganze Nacht lang PHP-Tutorials durchgearbeitet. Da sollte man eigentlich wissen, wie ein PHP-Abschnitt markiert wird. :wink:
Xentar: Ich sehe es gerade mit Schrecken. Eine Frechheit ist das.
Delete - Mo 22.02.10 23:42
@Xentar
Ich hab es mir nicht zusammenkopiert ich hab es schon so bekommen.
Kann mir den jetzt keiner Helfen?
lg
Delete - Mo 22.02.10 23:45
Noch schlimmer.
Wobei denn jetzt helfen? Nach elf Seiten habe ich so etwas den Überblick verloren. Funktioniert denn mein Code jetzt?
Delete - Mo 22.02.10 23:50
Ja dein code geht
wen ich den button dan Drücke wird Hallo Erwin wie geht es dir ausgegeben.
Bei DonManfred geht er bei mir nicht das kanns ja irgendwie nicht geben oder?
lg
Delete - Di 23.02.10 00:16
Dann mach doch mit meinem Code weiter. Den Unterschied/Fehler in dem anderen Code kannst du ja später suchen, wenn es dich noch interessiert.
Delete - Di 23.02.10 00:30
Ja aber wie soll ich weitermachen?
Delete - Di 23.02.10 00:34
Ja was fehlt denn noch? Das musst du doch wissen. Die Übergabe der restlichen Daten an das Script der Eintrag bzw. Abfrage der Datenbank und die Rückgabe. Und genau in der Reihenfolge machst du jetzt weiter und guckst immer, ob es auch funktioniert bevor du weiter machst.
Delete - Di 23.02.10 00:44
Ich kann des aber nicht :(
Delete - Di 23.02.10 00:49
Dann lernst du es eben. Und wie man die restlichen Daten übergibt sollte ja wohl kein Problem sein. Du hast ja meinen Code als Vorlage. Also wenn du das noch nicht mal hinbekommst, solltest du erst mal die aller nötigsten Grundlagen lernen bezüglich Delphi, PHP, wie Formulare in PHP funktionieren und wie man mit PHP Datenbanken abfragt. Wenn du das kannst, kannst du die Teile zusammensetzen.
Narses - Di 23.02.10 00:51
Moin!
So, wir sind also wieder beim Betteln angekommen :nixweiss: und ich muss sagen, mir reißt auch langsam (langsam? nach 11 Seiten? :roll:) der Geduldsfaden. :| Was dir fehlt, sind massenhaft Grundlagen, und bevor du dir die nicht angeeignet hast, hat das hier keinen Zweck. :idea: Deshalb mache ich erstmal zu. So hast du die Gelegenheit, dich nochmal intensiv mit den Grundlagen und den Tipps hier im Thread auseinanderzusetzen.
Du hast ja noch den Job-Börse-Thread, wenn du es nicht selbst machen kannst/möchtest/wasauchimmer. Wenn sich da keiner findet, solltest du über eine Erhöhung deines Angebots nachdenken. :!:
cu
Narses
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!