dedlfix: auf externe Datenbank zugreifen

Beitrag lesen

echo $begrüßung;

$sql = "SELECT * FROM apartments WHERE id apartments = ".$_GET['id']."";
Benutzereingaben unbehandelt in SQL-Statements zu übernehmen ist fahrlässig.

Diese Reaktion ist bei mir schon zum Reflex geworden, wenn ich solch ein Konstrukt sehe. Dabei habe ich in dem Fall unterschlagen, dass du die Query ja nur ausführst, wenn is_numeric($_GET['id']) zutrifft. Das ist zwar schon eine ausreichende Prüfung, trotzdem schadet es unter MySQL nicht, auch reine Zahlenwerte als Strings zu notieren und sie mit mysql_real_escape_string() zu behandeln. Falls irgendjemand mal in Zukunft auf die Idee kommt, alphanumerische Werte für die ID zu verwenden, ist diese Stelle dann bereits gesichert.

Alternativ kann man auch die Prüfung mit is_numeric() weglassen und mit intval() zwangsweise einen Integerwert aus $_GET['id'] machen. Ungültige Werte werden dann zu 0. Wenn es die ID 0 nicht gibt, hast du das gleiche Abfrageergebnis wie bei einer nicht vorhandenen ID, und damit nur noch einen Fehlerbehandlungszweig, statt derzeit derer zwei.

echo "$verabschiedung $name";