|
Wandelt Sonderzeichen in HTML-
Entfernt Whitespaces (oder andere Zeichen) am Anfang und Ende eines Strings |
Tutorials - Erste Schritte - Formulare - HTML-Eingabe verhindernTutorials - Erste SchritteFormulare: HTML-Eingabe verhindern
Wichtiger zu vermeiden als ein paar läppische Leerzeichen ist eine HTML-Eingabe des Benutzers. Im folgenden Beispiel habe ich eine einfache Tabelle gemalt. In Zelle 2 soll das Ergebnis des Formulars ausgegeben werden. Mit Eingabe von "</table>" (dem Tabellen-Schließbefehl) in das Formularfeld kann ein User diese Tabellenoptik nachhaltig zerstören - oder er könnte sogar fiese JavaScripts oder JavaApplets einbauen. Teste es mal durch Eingabe eines reinen Textes, und dann durch Eingabe von "</table>"
<html> <table width="180" border="1" cellspacing="2" cellpadding="0"> <tr> <td>1</td> <td><?php echo $_POST['Tabellentext'];?></td> <td>3</td> </tr> <tr> <td>4</td> <td>5</td> <td>6</td> </tr> </table> </html> FormularQuelltext anzeigen
<html>
<form method="post" action="/script.php"> Zelle2: <input type="text" name="Tabellentext"><br /> <input type="submit" name="absenden" value="Script starten"> </form> </html> htmlspecialchars heißt übersetzt HTML-Sonderzeichen. Denn die HTML-Signalzeichen "<" und ">" werden dann umgewandelt in < (lower than / kleiner als) und > (greater than / größer als) (also die mathematischen Bedeutungen) - so können sie keinen Schaden mehr anrichten
<?php $Tabellentext = htmlspecialchars($_POST['Tabellentext']); ?> <html> <table width="180" border="1" cellspacing="2" cellpadding="0"> <tr> <td>1</td> <td><?php echo $Tabellentext;?></td> <td>3</td> </tr> <tr> <td>4</td> <td>5</td> <td>6</td> </tr> </table> </html> FormularQuelltext anzeigen
<html>
<form method="post" action="/script.php"> Zelle2: <input type="text" name="Tabellentext"><br /> <input type="submit" name="absenden" value="Script starten"> </form> </html> Hier wird zuerst ( wie in Mathe wird von innen nach außen in den Klammern "gerechnet") htmlspecialchars() ausgeführt, dann werden per trim() überflüssige Leerzeichen abgeschnitten
<?php $error = 0; $Vorname = trim(htmlspecialchars($_POST['Vorname'])); $Nachname = trim(htmlspecialchars($_POST['Nachname'])); $Straße = trim(htmlspecialchars($_POST['Straße'])); $HausNr = trim(htmlspecialchars($_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> |