|
Finds whether a variable is a number or a numeric string
Entfernt Whitespaces (oder andere Zeichen) am Anfang und Ende eines Strings |
Tutorials - Erste Schritte - Formulare - Daten checkenTutorials - Erste SchritteFormulare: Daten checken
Falsche Eingaben. Ein Problem, mit dem man bei jedem Formular-Eintrag eines Besuchers rechnen muss. Wir wollen ja später die Daten in einer Datei oder einer Datenbank speichern, da sollten sie aber schon auch brauchbar sein. Sehr beliebt ist es bei Websitebesuchern, Felder einfach leer zu lassen. Ich ändere das Script jetzt so ab, dass leere Felder als Fehler erkannt werden. Wenn nicht in alle Felder etwas eingetragen wurde, wird eine Fehlermeldung ausgegeben.
<?php $error = 0; /* ich setzte die Variable $error auf 0 - bei größeren Scripten später könnte es ja sein, dass die Variable noch einen Wert trägt */ if($_POST['Vorname'] == "") $error = 1; /* falls in "Vorname" nichts eingegeben wurde wird error = 1 gesetzt. */ if($_POST['Nachname'] == "") $error = 1; /* falls in "Nachname"... */ if($_POST['Straße'] == "") $error = 1; /* ... */ if($_POST['HausNr'] == "") $error = 1; /* ... */ if($error == 0) { /* error ist jetzt nur noch dann 0, wenn in allen Textfeldern etwas drinstand... */ echo "Der Mensch vor diesem PC heißt $_POST[Vorname] $_POST[Nachname], er wohnt in der $_POST[Straße] $_POST[HausNr]."; } else { /* else... */ echo "<font color=red><b>FEHLER IN DEN EINGABEN !!!<br />" . /* wird die Fehlermeldung ausgegeben */ "Bitte fülle alle Felder aus</b></font>"; } ?> FormularQuelltext anzeigen
<html>
<form method="post" action="/script.php"> Vorname: <input type="text" name="Vorname"><br /> Nachname: <input type="text" name="Nachname"><br /> Straße: <input type="text" name="Straße"><br /> Hausnummer: <input type="text" name="HausNr" size="5"><br /> <input type="submit" name="absenden" value="Script starten"> </form> </html>
<?php $error = 0; if($_POST['Vorname'] == "" or $_POST['Nachname'] == "" or $_POST['Straße'] == "" or $_POST['HausNr'] == "") { $error = 1; } if($error == 0) { echo "Der Mensch vor diesem PC heißt $_POST[Vorname] $_POST[Nachname], er wohnt in der $_POST[Straße] $_POST[HausNr]."; } else { echo "<font color=red><b>FEHLER IN DEN EINGABEN !!!<br /> Bitte fülle alle Felder aus</b></font>"; } ?> FormularQuelltext anzeigen
<html>
<form method="post" action="/script.php"> Vorname: <input type="text" name="Vorname"><br /> Nachname: <input type="text" name="Nachname"><br /> Straße: <input type="text" name="Straße"><br /> Hausnummer: <input type="text" name="HausNr" size="5"><br /> <input type="submit" name="absenden" value="Script starten"> </form> </html> if(is_numeric($x)) englisch gelesen: if $x is numeric deutsch übersetzt: wenn $x numerisch ist (eine Zahl ist) Was auffällt, es fehlt jedes Vergleichszeichen. Also kein <, kein >, kein ==, kein gar nichts. Warum ? is_numeric() gibt einen Wahrheitswert zurück. Entweder true oder false. Also muss gar nichts mehr verglichen werden, is_numeric() sagt direkt ob die Bedingung richtig oder falsch ist.
<?php if($_POST['Startwert'] == "") { echo "Keine Zahl eingegeben"; exit; } if(is_numeric($_POST['Startwert'])) { if($_POST['Startwert'] < 10000) { for ($x = $_POST['Startwert']; $x >= 0; $x = $x - 1) { echo $x; echo "<br />\n"; } } else { echo "Bitte eine niedrigere Zahl eingeben"; } } else { echo "Es wurde keine Zahl eingegeben"; } ?> FormularQuelltext anzeigen
<html>
<form method="post" action="/script.php"> Countdown von: <input type="text" name="Startwert"><br /> (die Zahl bitte kleiner als 10000 wählen)<br /> <input type="submit" name="absenden" value="Script starten"> </form> </html> Oder er versucht besonders clever zu sein und gibt in das Feld nur Leerzeichen ein. Die Funktion trim() schneidet einer Variablen Leerzeichen am Anfang und am Ende einfach ab. Besteht der Text nur aus Leerzeichen, ist er dananch leer. ( == "") ";
<?php $error = 0; $Vorname = trim($_POST['Vorname']); $Nachname = trim($_POST['Nachname']); $Straße = trim($_POST['Straße']); $HausNr = trim($_POST['HausNr']); if($Vorname == "" or $Nachname == "" or $Straße == "" or $HausNr == "") { $error = 1; } if($error == 0) { echo "Der Mensch vor diesem PC heißt $Vorname $Nachname, er wohnt in der $Straße $HausNr."; } else { echo "<font color=red><b>FEHLER IN DEN EINGABEN !!!<br /> Bitte fülle alle Felder aus</b></font>"; } ?> FormularQuelltext anzeigen
<html>
<form method="post" action="/script.php"> Vorname: <input type="text" name="Vorname"><br /> Nachname: <input type="text" name="Nachname"><br /> Straße: <input type="text" name="Straße"><br /> Hausnummer: <input type="text" name="HausNr" size="5"><br /> <input type="submit" name="absenden" value="Script starten"> </form> </html> |