echo $begrüßung;
Ich übernehme die Globalen Variablen aus dem Form. dazu habe ich zwei Überlegungen/Lösungen angestellt, die ich jetzt hier besprechen will:
Übernehmen? Die Werte stehen doch schon für deinen Zugriff in den bekannten Arrays $_GET und $_POST. Du musst einfach nur darauf zugreifen. Umkopieren, "übernehmen", was auch immer ist nicht notwendig.
if (! ($nid=$_GET['nid'])){$nid=NULL;}
$mynid ="$nid";
//reicht das aus?
Wofür soll das ausreichen? Hast du bisher definiert, was in diesem speziellen Fall für dich "sicher" heißt?
Möchtest du wissen, ob ein bestimmter Parameter übergeben wurde? Sieh nach, ob das zugehörige Array-Element in $_GET/$_POST gesetzt ist. isset() bietet sich dafür an.
Einen Variablennamen in "" zu notieren ist in keinem Fall notwendig.
Lösung 1: (Hier prüfe ich noch POST)
if (!empty($_GET[‘nid’])) //ist diese Abfrage genauer?
Für welches Ziel? Die Bedingung wird wahr, wenn $_GET['nid'] einen Wert enthält, den empty() nicht als leer ansieht. Ein String '0' beispielsweise wäre auch leer, obwohl er aus dem Zeichen '0' besteht.
else if (!empty($_POST[‘nid’]))
Du solltest dir im Klaren sein, über welchen Weg deine Werte zum Script finden. Alle beide Arrays ($_GET und $_POST) danach abzusuchen ist in den meisten Fällen unsinnig. Außerdem gibt es für den Fall $_REQUEST.
//Frage: soll ich hier mit den variablen $nid prüfen:
if $nid = (int) $nid;
oder eher die Daten direkt prüfen:?
$_GET['nid'] = (int) $_GET['nid'];
Siehe oben. $nid anzulegen ist prinzipiell nicht notwendig. Nun kommt es auf den konkreten Anwendungsfall an, ob eine Variable für einen Zwischenschritt notwendig ist, oder ob man den Wert in $_GET/$_POST direkt einer Ausgabe oder einer Funktion, die den Wert für eine Ausgabe präpariert, übergibt, wenn keine weiteren Bearbeitungen mit dem Zwischenergebnis notwendig sind.
Ist es notwendig auf nummeric zu prüfen oder ob so bei zahlen von 1 bis 10000?
Das kommt auf deinen Anwendungsfall an. Welche Werte erwartest du? Prüfe auf diese Werte. Generell sind übrigens alle $_GET/$_POST-Werte vom Typ String.
Soweit bin ich jetzt - ich will noch versuchen zu prüfen ob eine Eingabe Zeilenumbrüche hat (für mail() attacken) und mysql_real_escape_string für SQL-Anweisung.
Das ist pauschal gesehen auch unsinnig. Wenn du einen Wert für einen Mail-Header erwartest, dann prüfe diesen auf Zeilenumbrüche oder erlaubte/verbotene Werte. Einem mehrzeiligen Kommentar die Zeilenumbrüche nicht zu gestatten wäre sicher nicht richtig. Und mysql_real_escape_string(), oder allgemein gesagt: Maskierfunktionen für bestimmte Kontexte, wendet man dann an, wenn man den Wert in den entsprechenden Kontext bringt, und nicht auf die Eingabewerte. Wenn später der Wunsch aufkommt, die Werte in einen anderen Kontext auszugeben ist es sicher ungünstig, wenn sie bereits für einen anderen Fall präpariert sind.
echo "$verabschiedung $name";