Nur bestimmten HTML Code zulassen
Frage von Progger99 | 05.12.2011 um 20:32
Ich habe auf meiner Homepage ein Formular, so dass Besucher die Artikel in meinem Blog kommentieren können. Ich möchte den Benutzern jetzt auch die Möglichkeit geben, gewisse Formatierungen und Links zu benutzen.
Allerdings sollen nur bestimmte HTML Tags erlaubt sein, da ich weder möchte, dass Benutzer das Design meiner Homepage zerhauen noch möchte ich dass jemand auf die Idee kommt Scripts oder Schad-Code auf diese Weise einzuschleusen.
Was ich also bräuchte wäre eine Funktion, die Tags wie <a>, <br> oder <p> erlaubt, aber alles andere wie zum Beispiel <script> oder dergleichen herausfiltert. Ich habe mich schon an eine Funktion mit regulären Ausdrücken gewagt, aber irgendwie komme ich da nicht weiter. Kann mir da jemand helfen??
Ähnliche Themen
CSS-Stylesheets in HTML einbinden
Tutorial | 0 Kommentare
Text nur in bestimmten Zeilen ersetzen
Tutorial | 0 Kommentare
PHP: Alle HTML-Tags aus String entfernen
Tutorial | 0 Kommentare
PHP: Nur bestimmte Buchstaben, Zahlen und Zeichen in einem String zulassen
Tipp | 10 Kommentare
HTML: Kein Zeilenumbruch zwischen bestimmten Worten
Tipp | 0 Kommentare
PHP: Eine E-Mail versenden
Tutorial | 0 Kommentare
Bild vor dem Upload im Browser verkleinern
Tutorial | 5 Kommentare
Wichtiger Hinweis
Bitte beachten Sie: Die Beiträge auf askingbox.de sind Beiträge von Nutzern und sollen keine professionelle Beratung ersetzen. Sie werden nicht von Unabhängigen geprüft und spiegeln nicht zwingend die Meinung von askingbox.de wieder. Mehr erfahren.
Jetzt mitmachen
Stellen Sie Ihre eigene Frage oder schreiben Sie Ihren eigenen Artikel auf askingbox.de. So gehts.
Das Zauberwort heißt strip_tags. Schau mal auf php.net/manual/de/function.strip-tags.php. Da findest du alles wichtige dazu!
07.12.2011 um 13:18
Um es mal ein bisschen genauer zu erklären: Die Funktion strip_tags() erwartet als Parameter einen String und optional die erlaubten Tags. Beispiel:
In der Ausgabe 1 sind keine Tags erlaubt, es wird nur 'Wort' ausgegeben. Anders ist es in der zweiten Ausgabe, hier ist der HTML Code <p> und <a> erlaubt. Da der String $s kein <a> enthält aber <p> bleiben alle <p> erhalten. Der Zeilenumbruch <br> wird aber gelöscht, da dieser nicht erlaubt ist. Würde man strip_tags($s, '<p><a><br>') schreiben, wäre auch der Zeilenumbruch <br> erlaubt.
08.12.2011 um 13:06
Achtung! Man sollte sich nicht alleine auf strip_tags verlassen! In einem erlaubten HTML-Tag könnte ein "böser" User mittels onmouseover oder dergleichen schadhaften Code unterbringen. Dieser wird mit strip_tags alleine noch nicht entfernt.
Man kann sich zum Beispiel so behelfen:
Dieser Code benutzt als erstes strip_tags(), um alle Tags bis auf <p> aus dem String zu löschen. Danach wird ein regulärer Ausdruck benutzt, der alle Attribute aus den Tags löscht. Dadurch verschwindet der onmouseover Befehl aus dem p-Tag, aber auch das, was bei class oder anderen möglicherweise gewollten Attributen angegeben ist. Wenn man bestimmte Attribute wünscht, kann man die Funktion noch entsprechend anpassen.
08.12.2011 um 21:40