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.