Top Fehler von PHP-Anfängern – Teil 4: Arbeiten mit Daten

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

Top-Fehler von PHP-Anfängern – Teil 4: Arbeiten mit Daten



Wir setzen die Artikelserie für diejenigen fort, die PHP lernen und besseren Code schreiben möchten. In diesem Teil behandeln wir drei kritische Fehler im Zusammenhang mit der Verarbeitung von Benutzerdaten, Caching und strenger Typisierung. Wenn Sie sich in der Phase des PHP-Lernens befinden, helfen Ihnen diese Beispiele, typische Probleme in realen Projekten zu vermeiden.



1. Vertrauen auf Daten aus superglobalen Arrays



Einer der häufigsten Fehler für PHP-Anfänger ist die Verwendung von Daten aus $_GET, $_POST oder $_REQUEST ohne Überprüfung und Filterung. Dies ist der direkte Weg zu XSS-Angriffen und SQL-Injection.



Fehlerhafter Ansatz

<?php// Gefährlich! Der Benutzer kann ein Skript senden$name = $_POST['username'];echo "Hallo, $name!";?>


Richtiger Ansatz

<?php// Wir verwenden Filterung und Escaping$name = htmlspecialchars(strip_tags(trim($_POST['username'] ?? '')), ENT_QUOTES, 'UTF-8');echo "Hallo, " . $name . "!";?>


Was tun? Verarbeiten Sie eingehende Daten immer. Verwenden Sie für die Arbeit mit der Datenbank vorbereitete Abfragen (PDO oder MySQLi) und für die Ausgabe htmlspecialchars(). Dies ist die Grundlage der Sicherheit in der PHP-Programmierung.



2. Fehlendes Caching schwerer Abfragen



Viele Anfänger führen bei jeder Seitenaktualisierung dieselbe SQL-Abfrage oder komplexe Berechnung aus. Das tötet die Leistung, besonders wenn es viele Abfragen gibt.



Beispiel des Problems

<?php// Jedes Mal Daten aus der Datenbank abfragen$users = $db->query("SELECT * FROM users WHERE active = 1")->fetchAll();foreach ($users as $user) {    echo $user['name'];}?>


Lösung mit Caching

<?php// Einfaches Datei-Caching verwenden$cacheFile = 'cache/users_active.cache';$cacheTime = 300; // 5 Minuten

if (file_exists($cacheFile) && (time() - filemtime($cacheFile)) < $cacheTime) { $users = unserialize(file_get_contents($cacheFile));} else { $users = $db->query("SELECT * FROM users WHERE active = 1")->fetchAll(); file_put_contents($cacheFile, serialize($users));}

foreach ($users as $user) { echo $user['name'];}?>


Für komplexere Projekte verwenden Sie Memcached oder Redis. Dies beschleunigt das PHP-Lernen im Hinblick auf das Verständnis der Architektur hochbelasteter Anwendungen.



3. Ignorieren der strengen Typisierung



PHP ist eine Sprache mit dynamischer Typisierung, aber seit Version 7.0 gibt es die Möglichkeit, den strengen Modus zu aktivieren. Anfänger vergessen dies oft, was zu unerwarteten Fehlern führt.



Typische Situation

<?phpfunction calculateSum($a, $b) {    return $a + $b;}

echo calculateSum(10, '5'); // Ergebnis: 15 (String wurde in Zahl umgewandelt)?>


Korrektur

<?phpdeclare(strict_types=1); // Strengen Modus aktivieren

function calculateSum(int $a, int $b): int { return $a + $b;}

// echo calculateSum(10, '5'); // Fatal error: Uncaught TypeErrorecho calculateSum(10, 5); // 15?>


Strenge Typisierung hilft, Fehler bereits in der Entwicklungsphase abzufangen, nicht erst in der Produktion. Wir empfehlen allen PHP-Anfängern, sich sofort daran zu gewöhnen, Typen für Argumente und Rückgabewerte anzugeben.



Bonus: Arbeiten mit Sessions ohne Überprüfung



Ein weiterer häufiger Fehler ist das Schreiben in die Session ohne Überprüfung, ob der Schlüssel existiert. Dies kann Warnungen auslösen.



<?phpsession_start();

// Fehler: Wenn der Schlüssel nicht existiert, erhalten wir eine Warnung$_SESSION['counter'] = $_SESSION['counter'] + 1;

// Richtig$_SESSION['counter'] = ($_SESSION['counter'] ?? 0) + 1;?>

Blogs

Buchempfehlungen