lima-city: Webhosting, Domains und Cloud
4 Pluspunkte 0 Minuspunkte
Ich bin Anfänger in PHP und versuche mich an Datenbanken. Ich verstehe das Prinzip von Cookies und Datenbanken aber was sind die Abläufe (am besten Schritt für Schritt) mit Codebeispielen dazu wie ich ein einfaches Login System in PHP und MySQL erstellen kann.
von  

1 Antwort

4 Pluspunkte 0 Minuspunkte

Ein sehr einfaches Beispiel mit Verwendung von Session Cookies. Erstelle eine MySQL-Datenbank und eine Tabelle für die Benutzer

CREATE DATABASE login_system;
USE login_system;
CREATE TABLE users (
    id INT AUTO_INCREMENT PRIMARY KEY,
    username VARCHAR(50) NOT NULL UNIQUE,
    password_hash VARCHAR(255) NOT NULL
);

Erstelle ein Registrierungsformular und speichere die Benutzerdaten in der Datenbank

<form action="register.php" method="POST">
    <label>Username:</label>
    <input type="text" name="username" required>
    <label>Password:</label>
    <input type="password" name="password" required>
    <button type="submit">Register</button>
</form>

Code: register.php

<?php
// Datenbankverbindung
$conn = new mysqli("localhost", "root", "", "login_system");

if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
}

if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    $username = $conn->real_escape_string($_POST['username']);
    $password = $_POST['password'];

    $passwordHash = password_hash($password, PASSWORD_BCRYPT);

    $sql = "INSERT INTO users (username, password_hash) VALUES ('$username', '$passwordHash')";

    if ($conn->query($sql)) {
        echo "Registration successful!";
    } else {
        echo "Error: " . $conn->error;
    }

}

$conn->close();
?>

Erstelle ein Login-Formular und überprüfe die Anmeldedaten

<form action="login.php" method="POST">
    <label>Username:</label>
    <input type="text" name="username" required>
    <label>Password:</label>
    <input type="password" name="password" required>
    <button type="submit">Login</button>
</form>

Code: login.php

<?php
session_start();

// Datenbankverbindung
$conn = new mysqli("localhost", "root", "", "login_system");

if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
}

if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    $username = $conn->real_escape_string($_POST['username']);
    $password = $_POST['password'];

    $sql = "SELECT id, password_hash FROM users WHERE username = '$username'";
    $result = $conn->query($sql);

    if ($result->num_rows > 0) {
        $row = $result->fetch_assoc();
        if (password_verify($password, $row['password_hash'])) {
            $_SESSION['user_id'] = $row['id'];
            echo "Login successful!";
        } else {
            echo "Invalid password.";
        }
    } else {
        echo "User not found.";
    }

}

$conn->close();
?>

Geschützte Seite erstellen

<?php
session_start();

if (!isset($_SESSION['user_id'])) {
    die("Access denied. Please <a href='login_form.html'>login</a>.");
}

echo "Welcome to the protected page!";
?>

Benutzer abmelden

<?php
session_start();
session_unset();
session_destroy();

header("Location: login_form.html");
exit;
?>
von (734 Punkte)