Zum Inhalt springen

Empfohlene Beiträge

Geschrieben

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.

Geschrieben

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

Geschrieben
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.

Geschrieben

<?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.

Geschrieben
<?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.";
}
?>

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.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...