Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

[PHP] SQL Abfrage in ein 2 Dimensionales Array Speichern

Empfohlene Antworten

Veröffentlicht

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.

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

  • Autor
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.

  • Autor

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

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

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.