Ist der Unterschied eines Arrays gegenüber einer Liste von Strings nicht gerade, dass du beliebige Objekte einfügen kannst, die dann selbst eine Struktur haben können?
In der Theorie fände ich es daher sauberer, einen Array von Objekten (Benutzern) zu erstellen und dann jedem Objekt die Eigenschaften Nutzername und PW-Hash zuzuweisen. Wie das in der Praxis aussieht, kann ich dir leider nicht sagen…
Ergebnis 1 bis 9 von 9
- 05.08.2010, 22:53 #1Finkenwerder Herbstprinz
Themenstarter
- Registriert
- 03.2008
- Ort
- Berlin, Germany, Germany
- Beiträge
- 463
Passwortsammlung speichern & aufrufen
Hallo liebe Community.
Ich habe ein kleines "Projekt" vor.
Und zwar habe ich einen PHP Filebrowser programmiert, der mit einem sessionbasierten Login System geschützt ist. Dabei ist es notwendig, dass es Mehrere Namen und Passwörter zum erfolgreichen Login führen.
Das habe ich so gelöst:
Nun möchte ich aber etwas gemütlicher Passwörter und Nutzer hinzufügen.Code:if (($username == 'nutzer1' && $passwort == 'pass1') or ($username == 'nutzer2' && $passwort == 'pass2') or ($username == 'nutzer3' && $passwort == 'pass3')) {
Da dachte ich, dass ich mir ein anderes Formular frickel, welches mir die Namen und Passwörter als MD5 Hash in eine Datei (blabla.txt oder so) speichert.
Und das Loginteil (der Code oben) müsste dann das ganze Abfragen. Also:
Nu frag' ich mich, wie ich die Zeilen definieren soll.Code:if (md5($passwort) == Zeile 1 von blabla.txt && md5($username) == Zeile 2 von blabla.txt) {
Also müsste mein Login-teil Die blabla.txt auslesen, dann ein Array (nutzernamen) und eines weiteres (passwörter) schreiben (also den ganzen text so auflösen: array1 = array1 + zeile 1 array2 = array2 + zeile2) und dann die arrays abgleichen:
und dann item2 von array1 und item2 von array2.Code:if (md5($username) == item1 von array1 && md5($passwort) == item1 von array2) {
Eben so oft, wie viele items im jeweiligen Array sind.
Ich hoffe ich habe das verständlich ausgedrückt.
Wie mach ich das denn? Das alles mit dem in Arrays auflösen und vor allem so oft wiederholen, bis das array durchgearbeitet ist??
Oder gibts eine noch einfachere Lösung als diese, die ich mir ausgedacht hab?
Vielen lieben Dank für jede Antwort, jeden Hinweis oder sogar ein schönes workaround.
Beste GrüßeMini-Leo
You can only take what you can carry.
- 05.08.2010, 23:16 #2Kleiner Weinapfel
- Registriert
- 10.2007
- Ort
- München
- Beiträge
- 1.137
- 05.08.2010, 23:24 #3Finkenwerder Herbstprinz
Themenstarter
- Registriert
- 03.2008
- Ort
- Berlin, Germany, Germany
- Beiträge
- 463
Klingt wunderbar. Da hast Du sicherlich Recht.
Scheint logischer.
Allerdings hab ich eher die Frage, wie man das dann liest.
Wahrscheinlich würde ich das schon hinbekommen. Allerdings weiß ich beim besten Willen nicht, wie ich variabel viele Einträge in die if {}; Schleife laden kann.
Also praktisch das if … or …*{} immer erweitern. Heute muss es 5 Einträge haben, morgen 7, 8, 9, dann 10 und so weiter.
Danke schon malMini-Leo
You can only take what you can carry.
- 06.08.2010, 06:58 #4
Schnell und einfach würde ich wie folgt vorgehen:
Name und Passwort in je eine Zeile einer Textdatei schreiben (z.B. Name=PSW).
Dann kannst Du die Datei Zeilenweise in ein Array laden.
Dann einfach mittels foreach und explode die Passwortabfrage machen.
Aber! gerade für Passwörter usw. würde ich nicht unbedingt eine TXT-Datei nehmen. Eine Datenbank wäre hier sicher der bessere und sichere Weg.Code:foreach ($arr AS $tpm) # jeder Eintrag (Zeile) wird abgearbeitet { $namePass = explode("=", $tpm); if ($username == $namePass[0] && $psw == $namePass[1]) { #Drin } }
Torben
- 06.08.2010, 12:40 #5Finkenwerder Herbstprinz
Themenstarter
- Registriert
- 03.2008
- Ort
- Berlin, Germany, Germany
- Beiträge
- 463
DANKE!
Klingt vernünftig.
Nur das foreach(); hatte mir gefehlt.
Ich denke, dass das mit der Textdatei nicht die Sicherste Methode ist. Da habe ich auch schon drüber nachgedacht.
Allerdings will ich ja auch Benutzernamen [U]und[/I] Passwörter als MD5 Hash sichern. Das würde die ganze Sache für den Hacker sicherlich Massiv erschweren.
Und durch die Passwörter wird auch kein CIA-Server gesichert
Also würde jetzt keiner sterben, wenn sich da einer einhackt. Und hinzu kommt, dass keiner Interesse an meiner Internetseite hat und sich da Stunden hinsetzt um per Bruteforce meine Passwörter hacken will
)
Danke nochmal.Mini-Leo
You can only take what you can carry.
- 06.08.2010, 12:43 #6Finkenwerder Herbstprinz
Themenstarter
- Registriert
- 03.2008
- Ort
- Berlin, Germany, Germany
- Beiträge
- 463
Gibts denn einen noch sichereren Hash als MD5, der auch von PHP unterstützt wird?
Ich könnte doch sogar zum Erhöhen der Sicherheit (kommt kein drauf [?]) den MD5 vom MD5 vom Passwort nehmen, oder?Mini-Leo
You can only take what you can carry.
- 06.08.2010, 18:28 #7Finkenwerder Herbstprinz
Themenstarter
- Registriert
- 03.2008
- Ort
- Berlin, Germany, Germany
- Beiträge
- 463
Ich glaub Du musst mir da noch mal helfen

Das hat nicht funktioniert.
Und foreach(); gibts mir einen Fehler aus:Code:// PWD-Datei wird eingelesen $arr = fopen('text.txt', 'r'); // Benutzername und Passwort werden überprüft foreach ($arr as $tpm) # jeder Eintrag (Zeile) wird abgearbeitet { $namePass = explode("=", $tpm);
Warning: Invalid argument supplied for foreach() in /Library/WebServer/Documents/schreiben/index.php
Woran liegt das?!
Muss ich das Text file irgendwie anders auslesen???
Danke & GrüßeMini-Leo
You can only take what you can carry.
- 06.08.2010, 23:45 #8Finkenwerder Herbstprinz
Themenstarter
- Registriert
- 03.2008
- Ort
- Berlin, Germany, Germany
- Beiträge
- 463
Habe es jetzt hinbekommen!
An dieser Stelle muss manbenutzen, um den Inhalt der Datei in ein Array zu bekommen.Code:$arr = file ('text.txt');
Jetzt funktioniert alles einwandfrei und alle meine Fragen sind geklärt.
Vielen Dank für die Unterstützung!
Alles Gute und liebe GrüßeMini-Leo
You can only take what you can carry.
- 07.08.2010, 09:22 #9


Zitieren


