Frage von YoloCheater, 47

Passwortabfrage in PHP wo das Passwort in eine MySql - Datenbank gespeicher wird?

Wie in der Frage schon erwähnt würde ich gerne eine Passwort abfrage in meine Website einbauen. Das zugelassene Passwort soll jedoch in meiner Datenbank gespeichert werden und vom Programm abgefragt werden und mit dem vom User eingegebenen verglichen werden. (Am besten mit einer "if()"-Abfrage). Das Einbinden und Abrufen der Datenbank ist kein Problem bloß die Abfrage ob das Passwort richtig ist will nicht klappen.

Die Tabelle ("Zugang") hat insgesamt 2 Spalten ("Standard" und "Admin"), wo jeweils darunter das zugelassene Passwort steht.(siehe Bild)

   mysql_select_db("N5W") or die ("Auswahl der Tabelle fehlgeschlagen");;
   $res = mysql_query("SELECT Standart FROM Zugang");

   $password = mysql_real_escape_string($_POST['pw']);

   if ($password == $res)
   {echo "Eingeloggt";}

Ich hoffe Ihr könnt mir weiterhelfen.

Antwort
von areaDELme, 7

ich würde an deiner stelle die db schon anders aufbauen.

users            
id                        1                            2
email                  admin@a.b           normal@a.b
passwort            adminpw-(HASH) normalpw-(HASH)

den login machst du dann mit email und passwort:

session_start();
$pdo = new PDO('mysql:host=#host;port=#port;dbname=#dbname', '#dbuser', '#dbuserpw');

if(isset($_GET['login'])) {
$email = $_POST['email'];
$passwort = $_POST['passwort'];

$statement = $pdo->prepare("SELECT * FROM users WHERE email = :email");
$result = $statement->execute(array('email' => $email));
$user = $statement->fetch();

//überprüfung des passworts
if ($user !== false && $passwort == $user['passwort']) {

echo "Eingeloggt";

} else {
$errorMessage = "error...";
}
}


--------------------------
mit der php-funktion crypt() kannst du die passwörter auch hashen
und dann die if-bedingung z.b. so ändern und so nur den aktuell erzeugten hash
mit dem in der datenbank vergleichen
(dann muss da aber auch der passwort_hash()-funktion erzeugt und gespeichert werden):

if ($user !== false && crypt($passwort, $user['passwort']) == $user['passwort']){

}


p.s. ich hoffe ich hab mich jetzt hier nicht vertippt. wird leicht unübersichtlich hier
Antwort
von triopasi, 23

Benutze mysqli_ statt mysql_, mysql ist veraltet und wird av PHP 7 nicht mehr unterstützt!

Expertenantwort
von TeeTier, Community-Experte für programmieren, 14

Von allen bisherigen Antworten mal abgesehen: Man speichert doch keine Klartext-Passwörter in einer DB! Das ist sicherheitstechnisch so ziemlich die größte Sünde, die man begehen kann! ><

Kommentar von areaDELme ,

-> du sollst nur das gehashte passwort speichern und dann bei der eingabe des passworts, dieses mit der selbsen funktion hashen und die hashs vergleichen.

Antwort
von aleabodo, 37

Vollkommen falscher zugriff. Mit select db greifsr dz auf die datenbank zu. Die tabelle steht dann bei SELECT * FROM Zugang WHERE.... die sql abfragen noch mal angucken. War eigentlich kaum etwas richtig

Kommentar von YoloCheater ,

und wie soll ich dann besten darauf zugreifen? Ich will es am ende in einer Variable so gespeichert haben damit ich eine if abfrage mit $passwort machen kann.

Antwort
von Dereta, 35

Schau dir nochmal an was mysql_query genau zurück liefert und wie du es richtig verarbeitest.

Kommentar von maximilianus7 ,

noch besser: ein tutorial angucken mysql-zugriff unter php - gugeln.

Keine passende Antwort gefunden?

Fragen Sie die Community