
Allgemeiner Überblick
Dieses Material behandelt die Handhabung von Formularen und den Anmeldeprozess mit nativem PHP. Formulare sind ein wichtiges Element in der Webanwendungsentwicklung, um Benutzereingaben wie Anmeldedaten zu erfassen. Daher ist es unerlässlich zu verstehen, wie Formulare funktionieren und wie PHP Daten verarbeitet. Darüber hinaus ist das Anmeldesystem eine der wichtigsten Sicherheitsfunktionen von Webanwendungen. Dieses Material führt die Teilnehmer durch den Workflow des Anmeldeformulars – von der Erstellung der Formularanzeige über die Erfassung der Eingabedaten und die Validierung anhand der Datenbank bis hin zur Verwaltung von Benutzersitzungen.
Lernerfolge
Nach Abschluss dieses Materials sollen die Studierenden in der Lage sein:
- Erläutern Sie den Ablauf des webbasierten Anmeldeformulars.
- Implementierte ein einfaches Login-System mit PHP und MySQL.
- Die Benutzerauthentifizierung erfolgt über Sessions.
- Sichern Sie Anmeldedaten mithilfe von Passwort-Hashing-Verfahren.
- Umgang mit Formulareingaben und grundlegende Validierung.
Praktikumsmaterialien
Arten von Formularen
Das Eingabeformular wird mit HTML-Tags erstellt. Seiten, die nur ein Formular enthalten (ohne PHP-Skript), sollten nicht im PHP-Format gespeichert werden, sondern können im HTML-Format vorliegen. Für die Gestaltung eines Eingabeformulars sind mindestens drei wichtige Punkte zu beachten:
- Die Methode eines Formulars bestimmt, wie die eingegebenen Daten gesendet werden. Es gibt zwei Arten dieser Methode: GET und POST. Diese Methode legt fest, wie die Eingabedaten gesendet und von PHP verarbeitet werden.
- Die Aktion eines Formulars bestimmt, wo die eingegebenen Daten verarbeitet werden. Bleibt dieses Feld leer, erfolgt die Formularverarbeitung auf derselben Seite. Formularseite und Verarbeitungsseite können somit getrennt oder zu einer einzigen Seite zusammengefasst werden.
- Die Schaltfläche „Absenden“ ist eine Schaltfläche, die allgemein als Auslöser für das Senden von Daten aus einem Eingabeformular dient. Wird diese Schaltfläche gedrückt, werden die Formulardaten an die im Attribut „action“ angegebene Seite gesendet (verarbeitet).
Methodenarten
1. BEKOMMEN
Die GET-Methode dient zum Senden von Daten über eine URL. Die mit der GET-Methode gesendeten Daten werden in der URL öffentlich angezeigt und können somit vom Benutzer eingesehen oder im Serverprotokoll gespeichert werden. Sonderzeichen wie Leerzeichen werden in Pluszeichen (+) oder Prozentzeichen (%) umgewandelt.
Beispiel für die GET-Methode:
index.php

tampil.php

Führen Sie anschließend index.php aus.

die erzeugte Leistung

<?php
session_start();
include 'koneksi/db.php';
$username = $_POST['username'];
$password = $_POST['password'];
$query = "SELECT * FROM users WHERE username='$username'";
$result = mysqli_query($conn, $query);
$user = mysqli_fetch_assoc($result);
if ($user && password_verify($password, $user['password'])) {
$_SESSION['user'] = $user['username'];
header("Location: dashboard.php");
} else {
echo "Login gagal. Username atau password salah.";
}
?>
2. POST
Die POST-Methode dient dazu, Daten verschlüsselt über eine HTTP-Anfrage zu senden. Da die mit der POST-Methode gesendeten Daten nicht in der URL erscheinen, ist sie sicherer und eignet sich besonders für die Übermittlung sensibler Daten wie Passwörter oder persönlicher Informationen. Die Daten werden im Anfragetext der HTTP-Anfrage gesendet und sind weder für den Benutzer sichtbar noch im Serverprotokoll gespeichert.
Zum Beispiel:
index.php

tampil.php


Ergebnis

Praktikumsausbildung
Wir werden die Funktionsweise des Logins in nativem PHP implementieren. Hier sind die Schritte:
1. Ordnerstruktur

2. Erstellen Sie eine Verbindungsdatei zur Datenbank unter connection/db.php
<?php
$host = "localhost";
$user = "root";
$pass
$db = "latihan_login_db";
$conn = mysqli_connect($host, $user, $pass, $db);
if (!$conn) {
die("Koneksi gagal: ". mysqli_connect_error());
}
?>Erstellen Sie anschließend die Benutzertabelle mit SQL wie folgt:
CREATE TABLE users (
id INT AUTO_INCREMENT PRIMARY KEY,
username VARCHAR(50) NOT NULL,
password VARCHAR(255) NOT NULL
);3. Anschließend wird ein Passwort-Hash generiert, der in die Datenbank eingefügt werden soll.
password_hash.php
<?php
// misalkan password disini menggunakan 12345
$password_hash = password_hash("12345", PASSWORD_DEFAULT);
echo $password_hash;Führen Sie anschließend PHP in Ihrem Terminal aus password_hash.php

Dies ist der Fall, Sie können den Benutzernamen und das Passwort_Hash in die Datenbank eingeben.

4. Erstellen Sie eine index.php-Datei mit einem Anmeldeformular
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Login</title>
<link href="https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css" rel="stylesheet">
</head>
<body class="bg-light">
<div class="container mt-5">
<div class="row justify-content-center">
<div class="col-md-4">
<div class="card shadow-sm rounded-4">
<div class="card-body">
<h3 class="text-center mb-4">Login</h3>
<form method="POST" action="login.php">
<div class="mb-3">
<label for="username" class="form-label">Username</label>
<input type="text" name="username" class="form-control" id="username" required>
</div>
<div class="mb-3">
<label for="password" class="form-label">Password</label>
<input type="password" name="password" class="form-control" id="password" required>
</div>
<button type="submit" class="btn btn-primary w-100">Login</button>
</form>
</div>
</div>
</div>
</div>
</div>
</body>
</html>
5. Erstellen Sie eine login.php-Datei
<?php
session_start();
include 'koneksi/db.php';
$username = $_POST['username'];
$password = $_POST['password'];
$query = "SELECT * FROM users WHERE username='$username'";
$result = mysqli_query($conn, $query);
$user = mysqli_fetch_assoc($result);
if ($user && password_verify($password, $user['password'])) {
$_SESSION['user'] = $user['username'];
header("Location: dashboard.php");
} else {
echo "Login gagal. Username atau password salah.";
}
?>
session_start() :
- Dient zum Starten einer Sitzung. Diese Sitzung ist wichtig, damit wir Anmeldedaten (wie z. B. den Benutzernamen) im Speicher des Servers speichern und zwischen Seiten verwenden können.
- Wenn die Anmeldung beispielsweise erfolgreich ist, speichern wir den Benutzernamen in der Sitzung.
include 'connection/db.php'; :
- Diese Zeile fügt die Datei connection/db.php ein, die die Verbindung zur MySQL-Datenbank enthält.
- Daher ist es nicht nötig, die Verbindungskonfiguration in dieser Datei neu zu schreiben.
Daten aus dem Anmeldeformular übernehmen (POST-Methode):
- $_POST['username']: Daten aus dem Eingabeformular abrufen name="username".
- $_POST['password']: Daten aus dem Eingabeformular abrufen name="password".
Hinweis: In einem fortgeschrittenen Stadium sollten wir zur Erhöhung der Sicherheit auch eine Eingabevalidierung oder einen Eingabefilter durchführen (z. B. htmlspecialchars() oder Stringvalidierung).
Überprüfung:
- if ($user): Prüfen, ob der Benutzername in der Datenbank gefunden wurde.
- password_verify(): Eine in PHP integrierte Funktion, die das vom Benutzer eingegebene Passwort ($password) mit dem gehashten Passwort in der Datenbank ($user['password']) vergleicht.
Dies ist eine sichere Methode zur Überprüfung von Passwörtern, da wir die Passwörter nicht direkt (im Klartext) vergleichen, sondern über einen sicheren Hash.
Wenn die Anmeldung erfolgreich war:
- Speichern Sie den Benutzernamen in der Session ($_SESSION['user']), damit er auf anderen Seiten (z. B. dashboard.php) verwendet werden kann.
- Mit header() zur Dashboard-Seite weiterleiten.
6. Erstellen Sie eine dashboard.php-Datei
<?php
session_start();
if (!isset($_SESSION['user'])) {
header("Location: index.php");
exit;
}
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Dashboard</title>
<link href="https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css" rel="stylesheet">
</head>
<body>
<nav class="navbar navbar-expand-lg navbar-dark bg-dark">
<div class="container">
<a class="navbar-brand" href="#">MyApp</a>
<div class="d-flex">
<a href="logout.php" class="btn btn-outline-light">Logout</a>
</div>
</div>
</nav>
<div class="container mt-5">
<div class="alert alert-success rounded-4 shadow-sm" role="alert">
<h4 class="alert-heading">Selamat Datang, <?php echo htmlspecialchars(_SESSION['user']); ?>!</h4>
<p>Kamu berhasil login ke dalam sistem. Ini adalah halaman dashboard sederhana.</p>
</div>
</div>
</body>
</html>
7. Erstellen Sie eine Datei namens logout.php.
<?php
session_start();
session_destroy();
header("Location: index.php");
session_destroy()
- Diese Zeile löscht alle gespeicherten Sitzungsdaten , einschließlich Anmeldedaten wie $_SESSION['user'].
- Diese Funktion wird verwendet, wenn sich der Benutzer vom System abmelden
möchte. Nach der Ausführung gehen alle in der Sitzung gespeicherten Informationen verloren, was bedeutet, dass der Benutzer die Anwendung verlassen hat.
header("Location: index.php");
- Weiterleitung zur Anmeldeseite
- Nach dem Löschen der Sitzung wird der Benutzer direkt zu index.php (Anmeldeseite) weitergeleitet.
- Dies macht die Benutzererfahrung klar: Nach dem Ausloggen kehrt er sofort auf die Seite zurück, um sich wieder anzumelden.
- Bitte versuchen Sie, sich über die Datenbank anzumelden.
Refrensi
https://pilarsolusi.co.id/pemrograman/perbedaan-antara-metode-get-dan-post-dalam-pemrograman-php/
https://www.malasngoding.com/belajar-php-penanganan-form-pada-php/