selfhtml.de - Alles für den Webmaster!

 

Anzeige: Goneo - Du machst das Web!

Anzeige: united-domains - Die ganze Welt der Domains

united domains - jetzt Wunsch-Domain sichern!

Einfache & schnelle Domain-Registrierung zu fairen Preisen ohne Einrichtungsgebühren. Mehr als 250 Domain-Endungen aus einer Hand inklusive E-Mail- & Web-Weiterleitung. Einzigartiges Domain-Portfolio zur bequemen & sicheren Verwaltung Ihrer Domain-Namen.

Jetzt Domain-Check bei united-domains!

Textarea-Inhalt validieren

Autor: Freddy
Datum: 20.07.2010 14:33:24

Hallo,

ich habe ein großes Formular, in dem es u.a. eine Textarea gibt, die HTML-Input eingefügt werden soll (daraus wird beim Absenden eine JSON-Datei gebastelt, für spätere Zwecke).

Um wenigstens ein bisschen sicherzustellen, dass das eingefügte HTML (Input ist lediglich Inhalt von BODY, also P, A, SPAN etc.) valide ist (hey, *ich* schreibe valide, die Eingabe meiner Mitstreiter würde ich aber gern überprüfen), würde ich gern diesen HTML-Inhalt irgendwie checken.


Meine erste Idee: beim Klick auf "Input validieren" wird ein PHP-Script per AJAX abgefeuert, dass den Inhalt in ein valides Grundgerüst + "W3C-Validator-Button" stopft (URL: <http://validator.w3.org/check>).

Vorteil: W3C-Validator
Nachteil: dazu müsste ich freilich eine Datei erzeugen, dass will aber nur ungern. Verzögertes Feedback (valide oder nicht).


Die folgende Idee ist bedingt durch das Vorhaben keine Datei zu erzeugen, sondern den Input direkt zu testen. Ich würde den Inhalt gegen RegEx (JS, oder AJAX/PHP) testen, die

- zählt, ob gerade eine Anzahl von < und > vorliegt, u./o.
- innerhalb von < und > nur ausgewählte Strings (sprich: Elemente) enthalten sind

Vorteil: schnelles Feedback
Nachteil: (mit meinen RegEx-Fähigkeiten) keine exakte Validierung möglich


Habt Ihr vielleicht weitere Ideen, und welche von beiden würdet Ihr bevorzugen?


Gruß,
Freddy



Anzeige: Goneo - Du machst das Web!

Anzeige: united-domains - Die ganze Welt der Domains

united domains - jetzt Wunsch-Domain sichern!

Einfache & schnelle Domain-Registrierung zu fairen Preisen ohne Einrichtungsgebühren. Mehr als 250 Domain-Endungen aus einer Hand inklusive E-Mail- & Web-Weiterleitung. Einzigartiges Domain-Portfolio zur bequemen & sicheren Verwaltung Ihrer Domain-Namen.

Jetzt Domain-Check bei united-domains!

Re: Textarea-Inhalt validieren

Autor: laza86
Datum: 20.07.2010 15:08:12

> Hallo,
>
> ich habe ein großes Formular, in dem es u.a. eine
> Textarea gibt, die HTML-Input eingefügt werden
> soll (daraus wird beim Absenden eine JSON-Datei
> gebastelt, für spätere Zwecke).
>
> Um wenigstens ein bisschen sicherzustellen, dass
> das eingefügte HTML (Input ist lediglich Inhalt
> von BODY, also P, A, SPAN etc.) valide ist (hey,
> *ich* schreibe valide, die Eingabe meiner
> Mitstreiter würde ich aber gern überprüfen),
> würde ich gern diesen HTML-Inhalt irgendwie
> checken.


> Meine erste Idee: beim Klick auf "Input
> validieren" wird ein PHP-Script per AJAX
> abgefeuert, dass den Inhalt in ein valides
> Grundgerüst + "W3C-Validator-Button" stopft (URL:
> <http://validator.w3.org/check>).
>
> Vorteil: W3C-Validator
> Nachteil: dazu müsste ich freilich eine Datei
> erzeugen, dass will aber nur ungern. Verzögertes
> Feedback (valide oder nicht).
>
>
> Die folgende Idee ist bedingt durch das Vorhaben
> keine Datei zu erzeugen, sondern den Input direkt
> zu testen. Ich würde den Inhalt gegen RegEx (JS,
> oder AJAX/PHP) testen, die
>
> - zählt, ob gerade eine Anzahl von < und >
> vorliegt, u./o.
> - innerhalb von < und > nur ausgewählte
> Strings (sprich: Elemente) enthalten sind
>
> Vorteil: schnelles Feedback
> Nachteil: (mit meinen RegEx-Fähigkeiten) keine
> exakte Validierung möglich
>
>
> Habt Ihr vielleicht weitere Ideen, und welche von
> beiden würdet Ihr bevorzugen?

Hi Freddy, für die sinnlose Frage von mir, gibt für dich einen Tipp.

Wieso lädst du dir den W3C Valid nicht direkt auf deinen Server und prüfst so direkt nach, ob die Eingabe valid ist.

Zu finden bei google oder direkt bei:
http://validator.w3.org/source/
http://www.bjoernsworld.de/html/validator-offline.html

Vielleicht ist der Tipp ja brauchbar.

Grüße
laza



Anzeige: Goneo - Du machst das Web!

Anzeige: united-domains - Die ganze Welt der Domains

united domains - jetzt Wunsch-Domain sichern!

Einfache & schnelle Domain-Registrierung zu fairen Preisen ohne Einrichtungsgebühren. Mehr als 250 Domain-Endungen aus einer Hand inklusive E-Mail- & Web-Weiterleitung. Einzigartiges Domain-Portfolio zur bequemen & sicheren Verwaltung Ihrer Domain-Namen.

Jetzt Domain-Check bei united-domains!

Re: Textarea-Inhalt validieren

Autor: xabbuh
Datum: 20.07.2010 15:10:23

Hallo,

meine erste Idee wäre, mal im Netz zu suchen, ob es evtl. schon vorgefertige Validatoren gibt, die in JavaScript implementiert sind. Auf die Schnelle habe ich gerade nichts gefunden, aber evtl. bist du ja erfolgreicher.

Um den W3C-Validator zu nutzen, müsstest du ja nicht einmal ein PHP-Skript erstellen, sondern könntest auch direkt in deinem Formular mit JavaScript eine HTTP-Anfrage an den W3C-Validator stellen, in der im Body des HTTP-Requests dein HTML steht (das müsstest du natürlich noch mit head, body, etc. umwickeln). Bietet das W3C evtl. sogar eine entsprechende API?

Wenn du auf den Server Zugriff hast, müsstest du wohl auch einen kommandozeilenbasierten Validator installieren können und diesen in einem Skript nach dem Abschicken des Formulars aufrufen können.

Gruß



Anzeige: Goneo - Du machst das Web!

Anzeige: united-domains - Die ganze Welt der Domains

united domains - jetzt Wunsch-Domain sichern!

Einfache & schnelle Domain-Registrierung zu fairen Preisen ohne Einrichtungsgebühren. Mehr als 250 Domain-Endungen aus einer Hand inklusive E-Mail- & Web-Weiterleitung. Einzigartiges Domain-Portfolio zur bequemen & sicheren Verwaltung Ihrer Domain-Namen.

Jetzt Domain-Check bei united-domains!

Re: Textarea-Inhalt validieren

Autor: T.Jung
Datum: 20.07.2010 15:42:55

> Habt Ihr vielleicht weitere Ideen, und welche von
> beiden würdet Ihr bevorzugen?

Ganz ehrlich? -- Ich würd's lassen.
Wenn der eigegebene Code zu Darstellungsfehlern führt, muss er eh korrigiert werden. Tut er ist nicht (ist also »einfach so« invalid), wäre es mir die Mühe nicht wert... schließlich habe _ich_ es nicht verbockt, sondern anderen.

Wenn überhaupt, würde ich versuchen, darauf zu dringen, dass auf dem fraglichen Server die Tidy-Library installiert wird:
http://www.php.net/manual/de/book.tidy.php
... und dann damit arbeiten -- oder eben, wie von meinen Vorrednern vorgeschlagen, den Validator auf dem Server installieren lassen.

> Ich würde den Inhalt gegen RegEx (JS,
> oder AJAX/PHP) testen, die
>
> - zählt, ob gerade eine Anzahl von < und >
> vorliegt

Gemäß der sinnvollen Vorgabe, dass beim allem, was man mit den einfachen Stringfunktionen erledigen kann, auf RegEx verzichten sollte, würde ich für diesen Part substr_count() vorziehen.
http://de2.php.net/manual/en/function.substr-count.php


> - innerhalb von < und > nur ausgewählte
> Strings (sprich: Elemente) enthalten sind

Ich bin jetzt auch nicht der RegEx-Meister, deshalb mag ich falsch liegen: Aber ich vermute, mit _einem_ RegEx ist das gar nicht möglich...
ich wüsste jetzt jedenfalls keine RegEx-Syntax, mit der man sagen kann: Finde einen String zwischen "<" und ">", der NICHT der übergebenen Klasse von erlaubten Strings entspricht.
Und wenn es doch so einen gibt, ist er höchstwahrscheinlich nicht sehr effizient.

Da würde ich eher
- per RegEx alle Tags raussuchen -- also alles zwischen "<" und ">";
- in jedem einzelnen Ergebnis per Stringfunktion alles löschen, was erlaubt ist,
- wenn etwas anderes übrig bleibt als ein Leerstring, ist es wohl etwas unerlaubtes.

Das Lustige ist nur: Selbst das nützt ja gar nichts!
Denn invaliden Code habe ich z.B. auch mit
  <a href="ziel.html">
      <div>
      Blablubb.
      </div>
  </a>

Und diese Verschachtelungsfehler kriegst Du eh nicht mit einem RegEx erfasst...
Mein Fazit: Hier ist selber basteln doof. ;-)

Gruß,
Tobias



Anzeige: Goneo - Du machst das Web!

Anzeige: united-domains - Die ganze Welt der Domains

united domains - jetzt Wunsch-Domain sichern!

Einfache & schnelle Domain-Registrierung zu fairen Preisen ohne Einrichtungsgebühren. Mehr als 250 Domain-Endungen aus einer Hand inklusive E-Mail- & Web-Weiterleitung. Einzigartiges Domain-Portfolio zur bequemen & sicheren Verwaltung Ihrer Domain-Namen.

Jetzt Domain-Check bei united-domains!

Re: Textarea-Inhalt validieren

Autor: Freddy
Datum: 20.07.2010 16:04:22

Hallo,

> Wieso lädst du dir den W3C Valid nicht direkt auf
> deinen Server und prüfst so direkt nach, ob die
> Eingabe valid ist.

Weil sich nicht um »mein« Server handelt.


> meine erste Idee wäre, mal im Netz zu suchen, ob
> es evtl. schon vorgefertige Validatoren gibt, die
> in JavaScript implementiert sind. Auf die
> Schnelle habe ich gerade nichts gefunden, aber
> evtl. bist du ja erfolgreicher.

Ich guck gleich mal intensiver, gerade habe ich aber auch nichts gefunden.


> Um den W3C-Validator zu nutzen, müsstest du ja
> nicht einmal ein PHP-Skript erstellen, sondern
> könntest auch direkt in deinem Formular mit
> JavaScript eine HTTP-Anfrage an den W3C-Validator
> stellen, in der im Body des HTTP-Requests dein
> HTML steht (das müsstest du natürlich noch mit
> head, body, etc. umwickeln). Bietet das W3C evtl.
> sogar eine entsprechende API?

Die haben 'ne Vali API, aber die bin ich noch nicht durchgegangen. Ich wollte zuerst hier Vorschläge sammeln. Auf den Server, auf dem ich arbyte, kann man von »draußen« nicht zugreifen, d.h. doch, dass ich auch keine Antwort da erwarten kann, nicht?


> Wenn du auf den Server Zugriff hast, müsstest du
> wohl auch einen kommandozeilenbasierten Validator
> installieren können und diesen in einem Skript
> nach dem Abschicken des Formulars aufrufen
> können.

Leider habe ich kein Zugriff. Nix SSH.

> > Habt Ihr vielleicht weitere Ideen, und welche von
> > beiden würdet Ihr bevorzugen?
>
> Ganz ehrlich? -- Ich würd's lassen.

Hmm... das ist natürlich auch eine Möglichkeit. :-)


> Wenn der eigegebene Code zu Darstellungsfehlern
> führt, muss er eh korrigiert werden. Tut er ist
> nicht (ist also »einfach so« invalid), wäre es
> mir die Mühe nicht wert... schließlich habe _ich_
> es nicht verbockt, sondern anderen.

Ja, aber ich wäre derjenige, der das ausbügeln muss.


> Wenn überhaupt, würde ich versuchen, darauf zu
> dringen, dass auf dem fraglichen Server die
> Tidy-Library installiert wird:
> http://www.php.net/manual/de/book.tidy.php
> ... und dann damit arbeiten -- oder eben, wie von
> meinen Vorrednern vorgeschlagen, den Validator
> auf dem Server installieren lassen.

Wie gesagt, ich habe keinen Zugriff.


> > Ich würde den Inhalt gegen RegEx (JS,
> > oder AJAX/PHP) testen, die
> >
> > - zählt, ob gerade eine Anzahl von < und
> >
> > vorliegt
>
> Gemäß der sinnvollen Vorgabe, dass beim allem,
> was man mit den einfachen Stringfunktionen
> erledigen kann, auf RegEx verzichten sollte,
> würde ich für diesen Part substr_count()
> vorziehen.
>
> http://de2.php.net/manual/en/function.substr-count.php
>
>
> > - innerhalb von < und > nur
> ausgewählte
> > Strings (sprich: Elemente) enthalten sind
>
> Ich bin jetzt auch nicht der RegEx-Meister,
> deshalb mag ich falsch liegen: Aber ich vermute,
> mit _einem_ RegEx ist das gar nicht möglich...
> ich wüsste jetzt jedenfalls keine RegEx-Syntax,
> mit der man sagen kann: Finde einen String
> zwischen "<" und ">", der NICHT der
> übergebenen Klasse von erlaubten Strings
> entspricht.
> Und wenn es doch so einen gibt, ist er
> höchstwahrscheinlich nicht sehr effizient.

OK, good to know.


> Da würde ich eher
> - per RegEx alle Tags raussuchen -- also alles
> zwischen "<" und ">";
> - in jedem einzelnen Ergebnis per Stringfunktion
> alles löschen, was erlaubt ist,
> - wenn etwas anderes übrig bleibt als ein
> Leerstring, ist es wohl etwas unerlaubtes.

OK, klingt eigentlich ganz gut.


> Das Lustige ist nur: Selbst das nützt ja gar
> nichts!
> Denn invaliden Code habe ich z.B. auch mit
>   <a href="ziel.html">
>       <div>
>       Blablubb.
>       </div>
>   </a>
>
> Und diese Verschachtelungsfehler kriegst Du eh
> nicht mit einem RegEx erfasst...

Ich sehe schon: der Aufwand übersteigt den Nutzen -- und wohl nicht zu knapp.


> Mein Fazit: Hier ist selber basteln doof. ;-)

Ich sammle *mich* jetzt mal etwas, und mach dann 'was, oder eben nicht.


Vielen Dank an Euch alle.


Gruß,
Freddy