frase wrote:zu uenc():
eben wegen meiner zunehmenden Vergesslichkeit muss ich häufiger auf euch (im Forum) zurückgreifen
Ist eigentlich ganz einfach: es muss
immer korrekt maskiert (neudt. escape`t) werden. Wenn ein beliebiger Text als URL-Teil verwendet werden soll, dann normalerweise mit
urlencode(); bei CMSimple halt mit uenc().
Und wenn man beliebige Texte als HTML ausgibt, dann muss
htmlspecialchars() verwendet werden; bei CMSimple_XH einfacher
XH_hsc. Das hatte ich weiter oben vergessen (apropos!); es sollte also so lauten:
Code: Select all
<li><a href="?<?=XH_hsc(uenc($tpl_tx['text']['3']))?>"><?=XH_hsc($tpl_tx['text']['3'])?></a></li>
Nach uenc() ist XH_hsc() eigentlich nicht nötig, aber im Zweifel schadet es auch nicht. Beim Elementinhalt allerdings schon (Beispiel "dies & das"). Und bedenken: in PHP sind Funktionsnamen case-insensitive; wer also xh_hsc() bevorzugt, kann das ruhig so schreiben.
PS: ach ja, ganz wichtig: XH_hsc() maskiert keine einfachen Anführungszeichen ('). Daher sollten Attribut-Werte immer mit doppelten Anführungszeichen (") eingeschlossen werden. Auf keinen Fall ganz auf die Anführungszeichen verzichten, ausser wenn es sicher ist, dass nur gültige Zeichen vorkommen; und selbst dann verwende ich immer doppelte Anführungszeichen (z.B. <p class="foo">).