oanes Geschrieben 4. Februar 2004 Teilen Geschrieben 4. Februar 2004 Hallo! Ich bin PHP-Anfänger und hab eine ziemlich einfache Frage. Bin dabei, ein Newssystem in PHP zu programmieren. Hab jetzt eine Datei namens admin.php in der es zwei Eingabefelder für Name und Passwort gibt und einen Submit-Button. Wie kann ich die Abfrage nach Name und Passwort nun in dieser Datei erledigen? Wenn ich im Form-Tag action="admin.php" method="post" eingebe, wird die Passwort-Abfrage ja 2-mal durchlaufen. Mir geht´s hier nur um die Funtionsweise, dass ich name und passwort nochmals an die gleiche php-datei übergebe, nicht um die sicherheit der abfrage, o.ä.! Hier der Quellcode: <? if($name != "test") { echo "Benutzername inkorrekt!"; }else { if($pw != "test") { echo "Passwort falsch!"; }else { echo "Login korrekt!"; } } echo $name; echo $pw; ?> <html> <body bgcolor="#FFFFFF" text="#000000"> <table width="50%" border="0"> <tr> <td> <form name="form1" method="post" action="admin.php"> <tr><td> <input type="text" name="name"></td></tr> <tr> <td> <input type="password" name="pw"></td></tr> <tr> <td> <input type="submit" name="login" value="Login"></td></tr> </table> </form> </td> </tr> </table> </body> </html> Vielen Dank im voraus Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
robotto7831a Geschrieben 4. Februar 2004 Teilen Geschrieben 4. Februar 2004 Hallo, Du solltest als erstes mal $name durch $_POST['name'] und $pw durch $_POST['pw'] ersetzen. Irgendwie verstehe ich Deine Frage noch nicht so ganz. Willst Du Name und Passwort nach der Eingabe speichern oder wie soll ich das verstehen? Frank Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Deagle--Knight Geschrieben 4. Februar 2004 Teilen Geschrieben 4. Februar 2004 hmmm erstmal als kleinen gedankenstoß ... ich würde die passwörter niemals in der gleichen datei wie das login behalten. user.php <? function einloggen() { if($_POST['name'] != "test") { echo "Benutzername ist falsch! "; } else { if($_POST['pw'] != "test") { echo "Passwort falsch!"; } else { echo "Login korrekt!"; } } echo $_POST['name']; echo $_POST['pw']; } ?> //hier hast du eine funktion (lernst du bestimmt später noch). welche aus der admin.php aufgerufen wird. hierbei kannst du die ifabfrage beliebig fortsetzen. sprich du kannst weitere user so hinzufügen. besser geht sowas über eine datenbank. aber da du sagst du kennst dich damit noch nicht aus, währe es falsch das hier jetzt zu erklären admin.php <? include("user.php"); einloggen(); ?> // damit rufst du die user.php in die admin.php datei rein und sagst er soll die function einloggen starten. <html> <body bgcolor="#FFFFFF" text="#000000"> <table width="50%" border="0"> <tr> <td> <form name="form1" method="post" action="admin.php"> <tr><td> <input type="text" name="name"></td></tr> <tr> <td> <input type="password" name="pw"></td></tr> <tr> <td> <input type="submit" name="login" value="Login"></td></tr> </table> </form> </td> </tr> </table> </body> </html> // dein normaler html code so kann sein das was nicht kappt, hab immo kein apache hier um das zu testen Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
kills Geschrieben 4. Februar 2004 Teilen Geschrieben 4. Februar 2004 meinst du so? <? if ( isset ( $_POST["name"]) && isset( $_POSt["pw"])) { if($_POST["name"] != "test") { echo "Benutzername inkorrekt!"; } else { if($_POST["pw"] != "test") { echo "Passwort falsch!"; } else { echo "Login korrekt!"; } } } ?> <html> <body bgcolor="#FFFFFF" text="#000000"> <table width="50%" border="0"> <tr> <td> <form name="form1" method="post" action="admin.php"> <tr><td> <input type="text" name="name"></td></tr> <tr> <td> <input type="password" name="pw"></td></tr> <tr> <td> <input type="submit" name="login" value="Login"></td></tr> </table> </form> </td> </tr> </table> </body> </html> [/PHP] Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
oanes Geschrieben 4. Februar 2004 Autor Teilen Geschrieben 4. Februar 2004 hey, ja genau. danke Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
*I C Q* Geschrieben 4. Februar 2004 Teilen Geschrieben 4. Februar 2004 Original geschrieben von kills meinst du so? Auch wenn's vielleicht jetzt ein wenig verwirrend ist: Ich persönlich bevorzuge bei solchen Aufrufen die (zusätzliche) Abfrage des Sumitbuttons, da man dann auch noch eine Meldung ausgeben kann, dass irgendwas nicht eingegeben wurde: <?php if (isset ( $_POST["btnsub"])) { if (isset ($_POST["name"]) && isset($_POST["pwd"])) { //überprüfe die Eingaben und mach was ganz tolles } else { echo "Irgendwas fehlt!" } } ?> <!-- Hier gibst Du Dein Formular aus --> <input type="submit" name="btnsub" value="Und los!"> [/php] Grobe Funktionsweise: Wenn der Button "btnsub" gedrückt wurde, wird die Überprüfung gemacht. Wenn dabei etwas vergessen wurde, gibt's ne Fehlermeldung. Ganz kurz, auch wenn's nicht gefragt war, zu den Sicherheitsaspekten: Abgesehen davon, dass man solche Sachen nicht hart codiert (was Du aber auch sicherlich selbst weisst, wie ich aus Deiner Anmerkung von oben schliesse ) ist's bei einer Passwortabfrage sicherer, wenn man keine getrennten Meldungen für "Falscher Benutzername" und "Falsches Passwort" ausgibt, sondern eine gemeinsame wie "Passwort oder Benutzername falsch!". Denn wenn jemand in das System "rein" will, dann hilft ihm ein richtiger Benutzername (was er ja anhand der getrennten Meldung sehen kann) schon erheblich weiter, während man aus der gemeinsamen Meldung nicht schliessen kann, was denn jetzt falsch ist. ICQ Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
kLeiner_HobBes Geschrieben 4. Februar 2004 Teilen Geschrieben 4. Februar 2004 Und wenn wir schon bei Tipps sind : ich würde für das Passwort ne md5-Verschlüsselung verwenden. die Funktion md5($string) gibt eine 32-Byte-lange md5-Verschlüsselung von $string zurück, wo man wirklich kaum die Chance hat, "rückwärts" den zugehörigen String zu errechnen. Das hieße: if (md5($_POST["pwd"]) == "8sd63jfl3hsv739v....") //Passwort stimmt else //Passwort stimmt nicht [/PHP] Gruß Benjamin Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Deagle--Knight Geschrieben 4. Februar 2004 Teilen Geschrieben 4. Februar 2004 aber das macht doch keinen sinn, wenn das pw so oder so in der datei steht ? dann brauch ich auch md5 nicht mehr ... Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
computercrustie Geschrieben 5. Februar 2004 Teilen Geschrieben 5. Februar 2004 Original geschrieben von Astarion aber das macht doch keinen sinn, wenn das pw so oder so in der datei steht ? dann brauch ich auch md5 nicht mehr ... Das würde dann Sinn machen, wenn das Passwort in der Datei ebenfalls schon MD5-verschluesselt ist. Das verhindert auch bei einem zufälligen bzw. ungewollten Zugriff auf die Datei, dass jemand die Passwörter sieht. Allerdings hast du dann das Problem, dass wenn einer der User sein Passwort vergessen hat, es ihm nicht mehr geschickt werden kann. Hierfür sollte man dann eine umkehrbare (am besten selbst geschreibene) Verschlüsselung verwenden. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Jaraz Geschrieben 5. Februar 2004 Teilen Geschrieben 5. Februar 2004 Moin, erst einmal nehme ich doch stark an das das ein Beispiel von oanes war und nicht das fertige Skript. Original geschrieben von computercrustie Das würde dann Sinn machen, wenn das Passwort in der Datei ebenfalls schon MD5-verschluesselt ist. Das verhindert auch bei einem zufälligen bzw. ungewollten Zugriff auf die Datei, dass jemand die Passwörter sieht. Dann müßte es aber schon ein sicheres Passwort sein, also nichts was im Wörterbuch steht und min. 8 Zeichen mit Sonderzeichen, da ein Brute Force Angriff auf ein MD5 bekanntes Passwort nicht schwer ist. Original geschrieben von computercrustie Allerdings hast du dann das Problem, dass wenn einer der User sein Passwort vergessen hat, es ihm nicht mehr geschickt werden kann. Hierfür sollte man dann eine umkehrbare (am besten selbst geschreibene) Verschlüsselung verwenden. Sorry aber das sehe ich nicht so, wenn dein Skript gehackt wird, nützt dir auch deine sebstgeschriebene Verschlüsselung nix, Passwörter sollten immer nur in eine Richtung funktionieren, also z.B. MD5. Wenn der User es vergisst wird ein neues generiert und ihm mitgeteilt. Wenn er eigene Passwörter benutzen können soll, gibt man ihm dann die Möglichkeit es zu ändern. Gruß Jaraz Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
computercrustie Geschrieben 5. Februar 2004 Teilen Geschrieben 5. Februar 2004 Original geschrieben von Jaraz Wenn er eigene Passwörter benutzen können soll, gibt man ihm dann die Möglichkeit es zu ändern. In den anderen Punkten gebe ich dir zum Teil Recht, aber ein wenn das Verschlüsselungscript in einem geschützten Verzeichnis liegt, dann dürfte es schwer für Hacker werden. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Jaraz Geschrieben 5. Februar 2004 Teilen Geschrieben 5. Februar 2004 Original geschrieben von computercrustie In den anderen Punkten gebe ich dir zum Teil Recht, aber ein wenn das Verschlüsselungscript in einem geschützten Verzeichnis liegt, dann dürfte es schwer für Hacker werden. Ja, wenn es eine Individuallösung ist ist das richtig, wenn jemand dann bis zum Skript durchkommt, kann er wahrscheinlich auch direkt die Datenbank auslesen. Wenn man seine Lösung allerdings verkauft, liefert man ja die Sourcen mit, sodaß sich jeder ver-und entschlüsselung anschauen kann. MD5 Passwörter sind nur ein Glied der Kette, die man allerdings nicht vernachlässigen sollte. Was das Ursprungsproblem betrifft, würde ich jedem raten auch bei relativ kleinen Projekten mit Templates zu arbeiten. Ist je nach System zwar etwas wo man sich einlesen muss, durch die Trennung von Logik und Design proggt man aber automatisch wesentlich sauberer. Gruß Jaraz Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.