Urishima Geschrieben 5. März 2007 Geschrieben 5. März 2007 Mahlzeit. Ich hab gerade ein kleines Problem. Ich bin dabei mir ein kleines Logonskript zusammenzuschreiben, das mit ner Datenbank zusammenarbeiten soll (wegen User-Ids und Passwörter). Das Originalskript kommt von php.net und schaut so aus: <?php $valid_passwords = array ("mario" => "carbonell"); $valid_users = array_keys($valid_passwords); $user = $_SERVER['PHP_AUTH_USER']; $pass = $_SERVER['PHP_AUTH_PW']; $validated = (in_array($user, $valid_users)) && ($pass == $valid_passwords[$user]); if (!$validated) { header('WWW-Authenticate: Basic realm="My Realm"'); header('HTTP/1.0 401 Unauthorized'); die ("Not authorized"); } // If arrives here, is a valid user. echo "<p>Welcome $user.</p>"; echo "<p>Congratulation, you are into the system.</p>"; ?>[/PHP] Klappt alles wunderbar, doch nun möchte ich die Datenbank dort miteinbeziehen, ID und Passwort sollen also nebeneinander in ein 2D Array gespeichert werden. Ich weiß dass ich eine Schleife brauchen werde um alle Datensätze durchzuarbeiten (is ja logisch) aber ich habe keinen Plan wie ich die Abfrage gestalten soll, ohne groß was in diesem Teil hier: [PHP]$valid_passwords = array ("mario" => "carbonell"); $valid_users = array_keys($valid_passwords); zu ändern. Kann mir wer einen Tip geben, einen Zaunfahl für mich schwingen oder sowas in der Richtung? MFG Uri [edit] Hab mir mal was durch den Kopf gehen lassen: $abfrage = "SELECT user_id, pw FROM users"; $erg = mysql_query($abfrage); while($row = mysql_fetch_array($erg)){ $valid_passwords = array ($row['user_id'] => $row['pw']); $valid_users = array_keys($valid_passwords); }[/PHP] Also funktionieren tuts noch nicht aber bin ich zumindest auf dem richtigen Weg? :confused: PS ja ich weiß, meine Programmierfähigkeiten sind nicht gerade ausgereift. Zitieren
Maulwurf_der_Schlaue Geschrieben 5. März 2007 Geschrieben 5. März 2007 Hi, ich weiß ja nicht wieso man 20 Einträge (Username, Passwort) überträgt für ein Login (da ich ja höchstens einen Eintrag brauche).. .aber egal.. hier mein ansatz $abfrage = "SELECT user_id, pw FROM users"; $erg = mysql_query($abfrage); while ($row = mysql_fetch_array($erg, MYSQL_ASSOC)) { // schleife $my_array[1][1] = $row["user_id"]; $my_array[1][2] = $row["pw"]; } [/PHP] glaube das es so geht, aber ist nicht getestet. für syntaxfehler bei PHP.net vorbeischaun Zitieren
Urishima Geschrieben 5. März 2007 Autor Geschrieben 5. März 2007 Hi, ich weiß ja nicht wieso man 20 Einträge (Username, Passwort) überträgt für ein Login hm, haste auch wieder recht. habs mal anders versucht: $user = $_SERVER['PHP_AUTH_USER']; $pass = $_SERVER['PHP_AUTH_PW']; $erg = mysql_query("SELECT pw FROM users WHERE user_id = '$user'"); $validated = ($pass == $erg);[/PHP] funzt auch net. Das Lustige ist, dass das Loginfenster zwar auftaucht aber ich kann eingaben so oft ich will, es geht nicht. und nach drei mal krieg ich antürlich die Fehlermeldung. Bin dann also mal auf Fehlersuche. Zitieren
Urishima Geschrieben 5. März 2007 Autor Geschrieben 5. März 2007 <?php include("connect.php"); $user = $_SERVER['PHP_AUTH_USER']; $pass = $_SERVER['PHP_AUTH_PW']; $pwe=mysql_query("SELECT pw FROM users WHERE user_id = $user"); if($pass == $pwe) { echo"Der geschützte Bereich."; } else { header("WWW-Authenticate: Basic realm=\"Private\""); header("HTTP/1.0 401 Unauthorized"); echo"Diese Webseite ist zugriffsgeschützt."; } ?> [/PHP] Mal ein etwas anderer Ansatz. Wenn mir jemand sagen kann woran es hapert wär das ganz klasse [edit] ok, anders war der auch nicht. Sorry, war der "Kurz-Vor-Feierabend" effekt. Zitieren
Monty82 Geschrieben 6. März 2007 Geschrieben 6. März 2007 <?php $pwe=mysql_query("SELECT pw FROM users WHERE user_id = $user"); if($pass == $pwe) { echo"Der geschützte Bereich."; } ?> [/PHP] Es wird wohl daran liegen, dass $pwe nur eine Resource ist, und nicht das ausgelesene Passwort aus der DB beinhaltet. [PHP]<?php $pwe=mysql_query("SELECT pw FROM users WHERE user_id = $user"); if($pwe && ($arrRow = mysql_fetch_assoc($pwe)) && ($pass == $arrRow['pw'])) { echo"Der geschützte Bereich."; } ?> Zitieren
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.