Author Topic: 2.8.3 WYSIWYG Content u. Text in MySQL identisch -> falsche Suchergebnisse  (Read 1366 times)

Offline jugeh

  • Posts: 55
  • Gender: Male
Hallo,
nach einer frischen Installation (2.8.3 SP1 1638) habe ich festgestellt, dass die Inhalte der Datenbankfelder Content u. Text in der Tabelle mod_wysiwyg identisch sind. Im Text sind also auch alle HTML-Elemente enthalten.
Das hat z.B. zur Folge, dass die Suche auch alle Worte findet, die in einer URL enthalten sind.

Eine 2. lokale Installation zum testen hatte das gleiche Ergebnis.

Ist das ein Bug oder könnte es eine Andere Ursache geben?

Bitte dringend um Hilfe.
Vielen Dank.
jugeh

Offline DarkViper

  • Forum administrator
  • *****
  • Posts: 2993
  • Gender: Female
jo, da hat sich anscheinend ein Codefragment verdünnisiert....

ändere mal in der Datei /modules/wysiwyg/save.php
die Zeile 49 von

   $text = umlauts_to_entities($content, strtoupper(DEFAULT_CHARSET), 0);
nach
   $text = umlauts_to_entities(strip_tags($content), strtoupper(DEFAULT_CHARSET), 0);
um.
Der blaue Planet - er ist nicht unser Eigentum - wir haben ihn nur von unseren Nachkommen geliehen

"You have to take the men as they are… but you can not leave them like that !" :-P
Das tägliche Stoßgebet: Oh Herr, wirf ihnen Hirn vom Himmel !

Offline jugeh

  • Posts: 55
  • Gender: Male
Danke,
da hatte ich auch schon gesucht, aber irgendwie überlesen. Jetzt funktioniert es wieder richtig.

Für zukünftige Versionen wäre es gut, wenn auch alle Scripte gefiltert würden.

Offline jugeh

  • Posts: 55
  • Gender: Male
Also....
das Thema ist offenbar doch etwas komplexer.

Leider werden Scripte noch immer nicht richtig gefiltert.
Das hat mehrere Gründe. Zunächstmal wird das Feld "text" von wysiwyg/search.php garnicht mehr genutzt, weil strip_tags zu wenig filtert. Zweitens gibt es einen Fehler in der Datei search/mode_ext.php in der Zeile 231.

Code: [Select]
$mod_text = preg_replace('#<(!--.*--|style.*</style|script.*</script)>#iU', ' ', $mod_text);

ändern in

$mod_text = preg_replace('#<(!--.*--|style.*</style|script.*</script)>#siU', ' ', $mod_text);

Es fehlt der Modifier "s" und daher werden nur einzeilige Kommentare, Styles und Scripte gefiltert.

Grundsätzlich erhebt sich die Frage, warum das gefilterte Feld "text" nicht mehr genutzt wird. Es ist doch einfacher und schneller, einmalig beim Speichern einer Seite (richtig) zu filtern als bei jedem Suchvorgang.

Vielleicht hat jemand aber dafür auch eine sinnvolle Erklärung?

P.S. Hier gibt es einen guten PHP-Code für diese Zwecke.
« Last Edit: August 13, 2012, 03:52:45 PM by jugeh »

NorHei

  • Guest
ui noch mehr fehlerchen

Offline jugeh

  • Posts: 55
  • Gender: Male
Für mich ist es schon ein Fehler und kein fehlerchen, allein die Zeit um die Ursache zu finden war nicht unerheblich.
Aber bei vielen wird sich der Fehler wohl nicht auswirken.

Zum grundsätzlichen Suchverfahren (Text-Feld und Filterung) hätte ich gerne noch etwas mehr Info.

NorHei

  • Guest
@jugeh ich stimm dir zu 100% zu das ist kein Fehlerchen sondern ne ausgewachsene Kakerlake

Bin nur immer wieder überrascht nach wie langer Zeit sich solche Fehler erst finden.
Zumal ich gedacht hatte, das das Text Feld immer beim Speichern  der Seite gesetzt wird.

Quote
Zum grundsätzlichen Suchverfahren (Text-Feld und Filterung) hätte ich gerne noch etwas mehr Info.
Dem schließ ich mich an