Bankprojekt Bankuser: Unterschied zwischen den Versionen

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen
(Die Seite wurde neu angelegt: „== Testbenutzer anlegen == === PHP-Skript zur Generierung von Passwort-Hashes === Um sichere Passwort-Hashes für die Testbenutzer zu generieren, kann das fol…“)
 
 
Zeile 1: Zeile 1:
−
== Testbenutzer anlegen ==
+
 
 +
== Erstellung und Import von Testbenutzern ==
  
 
=== PHP-Skript zur Generierung von Passwort-Hashes ===
 
=== PHP-Skript zur Generierung von Passwort-Hashes ===
−
Um sichere Passwort-Hashes für die Testbenutzer zu generieren, kann das folgende PHP-Skript verwendet werden:
+
Die Testbenutzer erhalten sichere, mit bcrypt gehashte Passwörter. Das folgende PHP-Skript generiert die Hashes und speichert die Benutzerdaten in einer CSV-Datei.
 +
 
 
<syntaxhighlight lang="php">
 
<syntaxhighlight lang="php">
 
<?php
 
<?php
Zeile 18: Zeile 20:
 
];
 
];
  
 +
$file = fopen('users.csv', 'w');
 
foreach ($users as $username => $password) {
 
foreach ($users as $username => $password) {
 
     $email = $username . '@linuggs.de';
 
     $email = $username . '@linuggs.de';
 
     $passwordHash = password_hash($password, PASSWORD_BCRYPT);
 
     $passwordHash = password_hash($password, PASSWORD_BCRYPT);
−
     echo "INSERT INTO users (username, email, password_hash, role) VALUES ('$username', '$email', '$passwordHash', 'user');\n";
+
     fputcsv($file, [$username, $email, $passwordHash]);
 
}
 
}
 +
fclose($file);
 +
echo "Benutzer in users.csv gespeichert.\n";
 
?>
 
?>
 
</syntaxhighlight>
 
</syntaxhighlight>
  
−
Speichern Sie dieses Skript als `generate_users.php` und führen Sie es in der Kommandozeile aus:
+
Führe das Skript aus, um die CSV-Datei zu erzeugen:
 
<syntaxhighlight lang="bash">
 
<syntaxhighlight lang="bash">
 
php generate_users.php
 
php generate_users.php
 
</syntaxhighlight>
 
</syntaxhighlight>
  
−
Das Skript gibt SQL-Befehle aus, die in die Datenbank eingefügt werden können.
+
Nach der Ausführung enthält die Datei `users.csv` die Benutzernamen, E-Mail-Adressen und gehashten Passwörter.
 +
 
 +
=== PHP-Skript zum Import der Testbenutzer ===
 +
Um die generierten Benutzer in die Datenbank `bankdb` zu importieren, wird folgendes PHP-Skript verwendet:
 +
 
 +
<syntaxhighlight lang="php">
 +
<?php
 +
$host = 'localhost';
 +
$dbname = 'bankdb';
 +
$username = 'root'; // ggf. anpassen
 +
$password = ''; // ggf. anpassen
 +
 
 +
try {
 +
    $pdo = new PDO("mysql:host=$host;dbname=$dbname;charset=utf8", $username, $password);
 +
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
  
−
=== Generierte SQL-Befehle ausführen ===
+
    // CSV-Datei einlesen
−
Die vom PHP-Skript generierten SQL-Befehle können direkt in MariaDB ausgeführt werden. Beispiel:
+
    $file = fopen('users.csv', 'r');
 +
    while (($data = fgetcsv($file, 1000, ",")) !== FALSE) {
 +
        $sql = "INSERT INTO users (username, email, password_hash, role) VALUES (:username, :email, :password_hash, 'user')";
 +
        $stmt = $pdo->prepare($sql);
 +
        $stmt->execute([
 +
            ':username' => $data[0],
 +
            ':email' => $data[1],
 +
            ':password_hash' => $data[2]
 +
        ]);
 +
    }
 +
    fclose($file);
 +
    echo "Benutzer erfolgreich importiert!";
 +
} catch (PDOException $e) {
 +
    die("Fehler: " . $e->getMessage());
 +
}
 +
?>
 +
</syntaxhighlight>
 +
 
 +
Führe das Skript aus, um die Benutzer in die Datenbank einzufügen:
 +
<syntaxhighlight lang="bash">
 +
php import_users.php
 +
</syntaxhighlight>
 +
 
 +
=== Überprüfung der importierten Benutzer ===
 +
Nach dem Import können die Benutzer mit folgendem SQL-Befehl überprüft werden:
 
<syntaxhighlight lang="sql">
 
<syntaxhighlight lang="sql">
−
INSERT INTO users (username, email, password_hash, role) VALUES
+
SELECT id, username, email FROM users;
−
('anna', 'anna@linuggs.de', '$2y$10$...', 'user'),
 
−
('benjamin', 'benjamin@linuggs.de', '$2y$10$...', 'user'),
 
−
('clara', 'clara@linuggs.de', '$2y$10$...', 'user'),
 
−
('daniel', 'daniel@linuggs.de', '$2y$10$...', 'user'),
 
−
('eva', 'eva@linuggs.de', '$2y$10$...', 'user'),
 
−
('felix', 'felix@linuggs.de', '$2y$10$...', 'user'),
 
−
('greta', 'greta@linuggs.de', '$2y$10$...', 'user'),
 
−
('henrik', 'henrik@linuggs.de', '$2y$10$...', 'user'),
 
−
('isabel', 'isabel@linuggs.de', '$2y$10$...', 'user'),
 
−
('jonas', 'jonas@linuggs.de', '$2y$10$...', 'user');
 
 
</syntaxhighlight>
 
</syntaxhighlight>
  
−
Ersetzen Sie `$2y$10$...` durch die tatsächlichen Passwort-Hashes, die das PHP-Skript generiert hat.
+
Wenn die Ausgabe die erwarteten Benutzer zeigt, war der Import erfolgreich.
−
 
 
−
Nach erfolgreicher Ausführung dieser Befehle sind die Testbenutzer in der Datenbank vorhanden und können verwendet werden.
 

Aktuelle Version vom 17. Februar 2025, 20:04 Uhr

Erstellung und Import von Testbenutzern

PHP-Skript zur Generierung von Passwort-Hashes

Die Testbenutzer erhalten sichere, mit bcrypt gehashte Passwörter. Das folgende PHP-Skript generiert die Hashes und speichert die Benutzerdaten in einer CSV-Datei.

<?php
$users = [
    'anna' => 'Passwort1',
    'benjamin' => 'Passwort2',
    'clara' => 'Passwort3',
    'daniel' => 'Passwort4',
    'eva' => 'Passwort5',
    'felix' => 'Passwort6',
    'greta' => 'Passwort7',
    'henrik' => 'Passwort8',
    'isabel' => 'Passwort9',
    'jonas' => 'Passwort10'
];

$file = fopen('users.csv', 'w');
foreach ($users as $username => $password) {
    $email = $username . '@linuggs.de';
    $passwordHash = password_hash($password, PASSWORD_BCRYPT);
    fputcsv($file, [$username, $email, $passwordHash]);
}
fclose($file);
echo "Benutzer in users.csv gespeichert.\n";
?>

Führe das Skript aus, um die CSV-Datei zu erzeugen:

php generate_users.php

Nach der Ausführung enthält die Datei `users.csv` die Benutzernamen, E-Mail-Adressen und gehashten Passwörter.

PHP-Skript zum Import der Testbenutzer

Um die generierten Benutzer in die Datenbank `bankdb` zu importieren, wird folgendes PHP-Skript verwendet:

<?php
$host = 'localhost';
$dbname = 'bankdb';
$username = 'root'; // ggf. anpassen
$password = ''; // ggf. anpassen

try {
    $pdo = new PDO("mysql:host=$host;dbname=$dbname;charset=utf8", $username, $password);
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

    // CSV-Datei einlesen
    $file = fopen('users.csv', 'r');
    while (($data = fgetcsv($file, 1000, ",")) !== FALSE) {
        $sql = "INSERT INTO users (username, email, password_hash, role) VALUES (:username, :email, :password_hash, 'user')";
        $stmt = $pdo->prepare($sql);
        $stmt->execute([
            ':username' => $data[0],
            ':email' => $data[1],
            ':password_hash' => $data[2]
        ]);
    }
    fclose($file);
    echo "Benutzer erfolgreich importiert!";
} catch (PDOException $e) {
    die("Fehler: " . $e->getMessage());
}
?>

Führe das Skript aus, um die Benutzer in die Datenbank einzufügen:

php import_users.php

Überprüfung der importierten Benutzer

Nach dem Import können die Benutzer mit folgendem SQL-Befehl überprüft werden:

SELECT id, username, email FROM users;

Wenn die Ausgabe die erwarteten Benutzer zeigt, war der Import erfolgreich.