SELECT vorname, nachname, gebdat FROM user WHERE vorname = '".$_POST['vn']."' AND nachname = '".$_POST['nn']."' AND gebdat = '".$_POST['tag'].".".$_POST['monat'].".".$_POST['jahr']."'
Ich finde es übersichtlicher das so zu schreiben:
$osc = array("'" => "''"); // ODBC-Special-Chars, evtl. unvollständig
$gebdat = sprintf('#%s-%s-%s#', $_POST['jahr'], $_POST['monat'], $_POST['tag']);
$selectStatement = sprintf('SELECT vorname, nachname, gebdat FROM user ' .
'WHERE vorname = "%s" AND nachname = "%s" AND gebdat = "%s"',
strtr($_POST['vn'], $osc),
strtr($_POST['nn'], $osc),
$gebdat);
Das sprintf spart eine Menge Tippfehlersuche bei den Anführungszeichen.
<durchsage type="Flughafen">Achtung Sicherheitshinweis! Verwenden Sie keine Usereingaben ungeprüft!</durchsage>
Was ist, wenn jemand O'Brian heißt, oder ungünstigerweise '; DELETE * FROM tabelle; ?
Ein Kommentar im Manual zu odbc-exec sagt, dass das Datum in # einzuschließen sei und in der Reihenfolge Jahr, Monat, Tag anzugeben ist. Eventuell muss auch noch die Uhrzeit mit dazu...