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 (397 Punkte)  
Diese Community basiert auf dem Prinzip der Selbstregulierung. Beiträge werden von Nutzern erstellt, bewertet und verbessert – ganz ohne zentrale Moderation.

Wer hilfreiche Fragen stellt oder gute Antworten gibt, sammelt Punkte. Mit steigender Punktzahl erhalten Mitglieder automatisch mehr Rechte, zum Beispiel

  • Kommentare verfassen
  • Fragen und Antworten bewerten
  • Themen von Fragen bearbeiten
  • Fragen, Antworten und Kommentare bearbeiten
  • Inhalte ausblenden

So entsteht eine Plattform, auf der sich Qualität durchsetzt – getragen von einer engagierten Gemeinschaft.

2.3k Fragen

2.8k Antworten

261 Kommentare

13 Nutzer