Folien



(letzte Synchronisation der PDF-Präsentation: 02.08.2017)

Falls keine PDF-Präsentation zu sehen ist, klicken Sie zum Download hier: Direktdownload PDF-Präsentation

Problem mit (einfachen und doppelten) Anführungszeichen und Sonderzeichen:

  1. innerhalb von doppelten Anführungszeichen dürfen nur einfache Anführungszeichen verwendet werden und umgekehrt. So können z.B. doppelte Anführungszeichen in Kommentaren ein Problem werden, indem das Skript abbricht oder die Anführungszeichen bei der Ausgabe/Weiterverarbeitung maskiert werden (Martin’s Hütte wird zu Martin\‘s Hütte).
  2. “<”, “>” und “&” können für schadhaften Code missbraucht werden

stripslashes()

stripslashes($variable) entfernt alle Backslashes aus Strings

htmlspecialchars()

htmlspecialchars($variable) wandelt <,>,” und & in HTML-Entitäten um (&lt;, &gt;, &quot; und &amp;). Im Browser wird man keine Veränderung sehen, nur im Quellcode (> wird weiterhin als > dargestellt).

Entschärfung von Variablen

… also mit folgendem Ablauf:

PHP-Code
  $eis = $_POST['eis']; $eis = htmlspecialchars($eis); $eis = stripslashes($eis);  

strtr()

Um beliebige Zeichen aus einem String durch andere zu ersetzen, benutzt man strtr() in der Form strtr($variable, "alte Zeichen", "neue Zeichen") (Groß-/Kleinschreibung wird beachtet!):

strtr($eis, "abc", "XYZ") ersetzt a durch X, b durch Y usw.
strtr("Müller", "üäö", "uao") erzeugt Ausgabe “Muller” (statt “Müller”).

nl2br()

erhält einen Umbruch in längeren Texten in textarea-Feldern: nl2br($eis) wandelt alle vom User eingegebenen Zeilenumbrüche in <br /> um (d.h. aus “new line” (\n) wird “break” (<br />) – “new line 2 break”

Übungen

Alle Übungen finden Sie in der Materialsammlung (dort auch alle zusätzlichen Dateien wie Bilder, Klassendiagramme oder HTML-Vorlagen!).

Die aktuelle Übung können Sie hier als txt-File herunterladen.


***** Übungen: PHP - Variablen entschärfen *****

PHP_15-1: Übungen zu stripslashes(), strtr(), nl2br() und htmlspecialchars()

1. Speichern Sie den String Franz\’ Fahrrad in einer Variablen und geben Sie sie mithilfe von stripslashes() ohne den Backslash aus.
2. Speichern Sie den String <h2> in einer Variablen und sorgen Sie dafür, dass mit htmlspecialchars() die Spitzklammern in HTML-Entitäten umgewandelt werden. Sehen Sie Unterschiede in der Ausgabe?
3. Können Sie die Umwandlung durch htmlspecialchars() und stripslashes() mit nur einer Anweisung vornehmen?
4. Schreiben Sie unter Verwendung von strtr() eine Anweisung, die in einer Variablen alle Großbuchstaben durch Kleinbuchstaben ersetzt.
5. Gegeben sei der String Wer reitet so spät durch Nacht und Wind?\nEs ist der Vater mit seinem Kind.\nEr hält den Knaben .... Wie wird er im Browser dargestellt? Sorgen Sie mit nl2br() dafür, dass im Browser die korrekten Zeilenumbrüche dargestellt werden.
6. Nicht ausprobieren, sondern nachdenken: Warum wird es hier zu Problemen kommen?

PHP-Code
$a = "Wer reitet so spät durch Nacht und Wind?\nEs ist der Vater mit seinem Kind.\nEr hält den Knaben ..."; $a = htmlspecialchars(nl2br($a)); echo $a;  




Weitere Übungen finden Sie in den Verzeichnissen
php15b-UE-formulare-zusammenfassung