Zum Inhalt springen

[PHP] Eingabefeld nur bestimmte HTML Tags erlauben


Empfohlene Beiträge

Hi!

Ich habe hier ein ganz normales HTML-Eingabefeld:

<textarea name="test" rows="10" cols="10"></textarea>

Beim abschicken des Formulars wird der Inhalt dieses Feldes in einer Datenbank abgelegt.

Jetzt benötige ich eine Funktion die mir folgendes ermöglicht:

  1. es gibt eine Liste (Array oder String) in der erlaubte HTML-Tags stehen
  2. es sollen nun aus den übermittelten Daten alle HTML-Tags, die nicht erlaubt sind in Ihre HTML-Entitäten umgewandelt werden

Ziel ist es, dem Benutzer eine rudimentäre HTML-Eingabemethode zu ermöglichen, wie z.B. in diesem Forum.

Gruß Tobias

Link zu diesem Kommentar
Auf anderen Seiten teilen

naja, als erstes hast du die grandiose aufgabe die liste anzulegen.

du erstellt einfach ne tabelle in der alle erlaubten befehle vorkommen.

beim abschicken des formulars muss dieses mit substring durchgearbeitet werden und wenn ein "<" findest musst du alles bis zum nächsten ">" in eine variable speichern, die wird mit nem sql aus der tabelle abgefragt und wenn die rückgabe größe als 0 ist dann musst du die spitzen klammern so setzten das sie auch wirklich spitz sind und nicht als ">" oder "<" dastehen. ansonsten kannst du es so lassen, der text wird dann wie ein html-tag angezeigt, funktioniert aber nicht ;)

Link zu diesem Kommentar
Auf anderen Seiten teilen

O_o also wenn ich dich richtig verseh dann wäre dieses Beispiel das was du willst:


EINGABEFORMULAR

<a href="http://www.google.de">Google</a>

<body bgcolor="****grün"> ... </body>

der anchor ist erlaubt, der body nicht

VERARBEITET

<body bgcolor="****grün"> ... </body>

oder meinst du das hier im forum wie
[b]
und das soll dann zu
<font bold> 

werden? aber wieso dann die verbotenen?

ich glaub ich blicks net...

Link zu diesem Kommentar
Auf anderen Seiten teilen

Also ich mach's nochmal deutlich:

Ich habe eine textarea, die beim submit an eine PHP-Datei geschickt und dort verarbeitet wird.

Angenommen der Benutzer hat folgendes eingegeben:


<h1>Test</h1>

<script type="text/javascript" src="badScript.js"></script>

<p>Hallo <a href="http://www.bar.org">Welt</a></p>

Dieser String wird an besagtes Script übergeben. Es gibt im Script eine Liste der erlaubten Tags, z. B. so:

$erlaubteTags = array('p', 'h1', 'a');

Und das soll jetzt in die Datenbank geschrieben werden:

<h1>Test</h1>

<script type="text/javascript" src="badScript.js"></script>

<p>Hallo <a href=http://www.bar.org">Welt</a></p>

Link zu diesem Kommentar
Auf anderen Seiten teilen

dann bau dir doch nen regEx zusammen...

Du sagst das so einfach. Ich habe mich vor Kurzem erst mit regEx geprügelt, dann aber doch eine Lösung gefunden. Irgendwie versteh ich die Syntax noch nicht wirklich - es wird aber langsam durchschaubar.

Aber ich denke auch, dass ereg_replace() die Lösung für dich sein dürfte.

Wenn Du einen Ansatz findest lass es uns bitte wissen. Das Thema interessiert mich auch.

gruss

markus

Link zu diesem Kommentar
Auf anderen Seiten teilen

Mein Tip: mixed preg_replace_callback ( mixed Suchmuster, callback Callback, mixed Zeichenkette [, int Limit])

http://de.php.net/manual/de/function.preg-replace-callback.php


# die Funktion muss eine eigene sein.
# um die entities zu erstellen kannst du dort die funktion html_entities nutzen ([url]http://de.php.net/manual/de/function.htmlentities.php[/url])

$prae = "§</?";
$post = ".+?>§ms";
$bad_tags = array("body","a","...");
# concat
$pattern .= $prae."[".implode("|", $bad_tags)."]*".$post;
preg_replace_callback($pattern, "makeEntity", $badInput);

[/PHP]

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...