Bug - Metatags werden falsch (doppelt) htmlentities codiert

Gesperrt
ravi
Beiträge: 54
Registriert: So 6. Aug 2006, 14:39
Kontaktdaten:

Bug - Metatags werden falsch (doppelt) htmlentities codiert

Beitrag von ravi » Sa 30. Mai 2009, 21:15

Betrifft neuestes 4.8.12 mit AMR mit allen Modulfixes.

Die Fehler betreffen:
1) Titel
2) Generierte Meta Tags
3) Händisch eingetragene Meta Tags

[b]1. Bug [/b] - Im TITLE Tag: Kategorienamen werden nicht kodiert auf ä -> ä die angehängten Artikelnamen schon.
Beides sollte kodiert werden.

[b]2. Bug [/b] - Metatags werden falsch (doppelt) codiert. Dies gilt für die automatisch generierten Metatags und aus dem Artikelnamen generierten. Beispiel siehe unten

[b]3. Bug[/b] - Umlaute die in die Metadata Felder im Backend direkt eingegben werden (Keywords, Description), werden gar nicht mit htmlentities umgewandelt sondern landen direkt als Umlaut im Quelltext.

Nach meinen Tests werden diese von Google nicht verwertet wenn man die Codierung auf utf-8 hat! Bei latin funkt das schon. Diese Codierung mit utf-8 ist meines Erachtens aber die Beste. Und man sollte daher schon umwandeln.

Beispiel für Bug 1:

Bug - Metatags werden falsch (doppelt) codiert.
statt

ä

steht dann

ä

[code]<meta name="description" content="&amp;amp;auml;" />
<meta name="keywords" content="oder, eine, ihnen, auch, k&ouml;nnen, mehr, infos, einem, nach, nicht" />
[/code]
Zuletzt geändert von ravi am Fr 5. Jun 2009, 00:27, insgesamt 3-mal geändert.

ravi
Beiträge: 54
Registriert: So 6. Aug 2006, 14:39
Kontaktdaten:

Re: Bug - Metatags werden falsch (doppelt) htmlentities codiert

Beitrag von ravi » Di 2. Jun 2009, 13:12

hmm, hat keiner von euch dieses Problem?
Habe das auch bei anderen Installationen beobachten können.

Oldperl
Beiträge: 4250
Registriert: Do 30. Jun 2005, 22:56
Wohnort: Eltmann, Unterfranken, Bayern
Kontaktdaten:

Re: Bug - Metatags werden falsch (doppelt) htmlentities codiert

Beitrag von Oldperl » Di 2. Jun 2009, 13:39

ravi hat geschrieben:hmm, hat keiner von euch dieses Problem?
Bitte wählen sie die richtige Antwort:
  1. Ich hatte diesen thread noch nicht gelesen
  2. ich habe noch keine Zeit gehabt das zu prüfen
  3. ich behalte den Vorgang im Auge (autsch)
  4. Isch abe gar kein Audo...
Ich nehme 1., 2. und 3. 8)

Gruß aus Franken

Ortwin
ConLite 2.1, alternatives und stabiles Update von Contenido 4.8.x unter PHP 7.x - Download und Repo auf Gitport.de
phpBO Search Advanced - das Suchwort-Plugin für CONTENIDO 4.9
Mein Entwickler-Blog

Dodger77
Beiträge: 3626
Registriert: Di 12. Okt 2004, 20:00
Wohnort: Voerde (Niederrhein)
Kontaktdaten:

Re: Bug - Metatags werden falsch (doppelt) htmlentities codiert

Beitrag von Dodger77 » Do 4. Jun 2009, 12:16

So, das ist definitiv ein Bug in der Chain "cecCreateMetatags". Ich glaube nicht, dass (ab Zeile 224 in der Datei "contenido/plugins/chains/includes/include.chain.content.createmetatags.php"):

Code: Alles auswählen

					case 'description':
						//Build description metatag from first headline on page
						$iCheck = CheckIfMetaTagExists($metatags, 'description');
						$metatags[$iCheck]['name'] = 'description';
						$metatags[$iCheck]['content'] = htmlentities(htmlspecialchars($sHeadline,ENT_QUOTES,$sEncoding));
						
						break;
					case 'keywords':
						$iCheck = CheckIfMetaTagExists($metatags, 'keywords');
						$metatags[$iCheck]['name'] = 'keywords';
						$metatags[$iCheck]['content'] = htmlentities(htmlspecialchars($sText,ENT_QUOTES,$sEncoding));

						break;
das macht, was es soll. Das htmlspecialchars() dürfte das htmlentities() vor Schwierigkeiten stellen, da htmlspecialchars() auch das Ampersand bereits umwandelt. Außerdem wird dort nicht beachtet, ob die Inhalte aus der Datenbank evtl. schon Entities enthalten. Im Extremfall habe ich bei UTF-8 beobachtet, dass die HTML-Ausgabe mitten in der Ausgabe des META-Elements abgebrochen wurde.

Oldperl
Beiträge: 4250
Registriert: Do 30. Jun 2005, 22:56
Wohnort: Eltmann, Unterfranken, Bayern
Kontaktdaten:

Re: Bug - Metatags werden falsch (doppelt) htmlentities codiert

Beitrag von Oldperl » Do 4. Jun 2009, 12:51

Ist nicht htmlspecialchars nur eine Untermenge von htmlentities? Da würde doch nur der Aufruf von htmlentities reichen.
Wobei da dann noch die Angabe der weiteren Parameter fehlt.

Gruß aus Franken

Ortwin
ConLite 2.1, alternatives und stabiles Update von Contenido 4.8.x unter PHP 7.x - Download und Repo auf Gitport.de
phpBO Search Advanced - das Suchwort-Plugin für CONTENIDO 4.9
Mein Entwickler-Blog

ravi
Beiträge: 54
Registriert: So 6. Aug 2006, 14:39
Kontaktdaten:

Re: Bug - Metatags werden falsch (doppelt) htmlentities codiert

Beitrag von ravi » Do 4. Jun 2009, 15:32

Danke, dass ihr da reinschaut. :)

Ja es reicht nur dies zu verwenden:
htmlentities($sText,ENT_QUOTES,$sEncoding);

--

Vom Verhalten her ist sicher auch ein Bug im Title - Tag da Kategorien und der Artikelname jeweils unterschiedlich kodiert werden.
Habe glaube ich auch Probleme feststellen können beim Codieren eines Gedankenstiches.
Jedenfalls besteht das Problem vor allem mit automatisch generierten Meta Codes. Wenn man selbst direkt Metatag Description, Keywords oder Title eingibt wird eigentlich richtig codiert und ich konnte noch keinen Fehler feststellen.

nonano
Beiträge: 43
Registriert: Do 13. Apr 2006, 17:45
Kontaktdaten:

Re: Bug - Metatags werden falsch (doppelt) htmlentities codi

Beitrag von nonano » Mi 26. Mai 2010, 16:04

Ich wollte nur mal Danke sagen ... :)

nonano
Beiträge: 43
Registriert: Do 13. Apr 2006, 17:45
Kontaktdaten:

Re: Bug - Metatags werden falsch (doppelt) htmlentities codi

Beitrag von nonano » Mi 26. Mai 2010, 16:17

Also ich habe jetzt mal die entsprechenden Zeilen geändert, und wenn man explizit Angaben macht funktioniert es auch. nur wenn man die Felder frei lässtt, und auf automatisch generierte Meta Tags baut, wird noch doppelt- und dreifach kodiert: &amp;amp;Uuml;berall Ampersand

Code: Alles auswählen

					case 'description':
						//Build description metatag from first headline on page
						$iCheck = CheckIfMetaTagExists($metatags, 'description');
						$metatags[$iCheck]['name'] = 'description';
						# $metatags[$iCheck]['content'] = htmlentities(htmlspecialchars($sHeadline,ENT_QUOTES,$sEncoding));
						  $metatags[$iCheck]['content'] = htmlentities($sHeadline,ENT_QUOTES,$sEncoding);
						
						break;
					case 'keywords':
						$iCheck = CheckIfMetaTagExists($metatags, 'keywords');
						$metatags[$iCheck]['name'] = 'keywords';
						# $metatags[$iCheck]['content'] = htmlentities(htmlspecialchars($sText,ENT_QUOTES,$sEncoding));
						  $metatags[$iCheck]['content'] = htmlentities($sText,ENT_QUOTES,$sEncoding);
						
Jemand ne Idee?

Gesperrt