Hallo borisbaer,
Ist ein HTML-formatierter Name nicht dennoch ein Name?
Ja, aber...
Was meinst du mit Kontextwechsel?
Uh oh. Lasst ihn leben, Brüder! (m/w/d)
Erstmal Basislektüre...
Wenn Du irgendwelche Texte aus einer Quelle liest und sie in eine HTML Seite ausgeben willst, ändert sich der Kontext dieser Daten.
Von "raw data" nach "Text in einer HTML Seite". Damit dieser Kontextwechsel gelingt und Dir nicht die Seite schrottet, z.B. weil ein unschuldiges < im Text steht, musst Du jeden Text, den Du irgendwoher bekommst, mit htmlspecialchars behandeln, bevor Du ihn zum Browser schickst. Bei Text, der im PHP steht, ist das nicht zwingend nötig, den siehst Du ja und kannst deshalb wissen, ob er Dir die Seite kaputt macht oder nicht.
Der Unterschied zwischen einem Namen und einem HTML-formatierten Namen ist, dass Du den Namen mit htmlspecialchars behandeln musst und den HTML-formatierten Namen nicht mit htmlspecialchars behandeln darfst. Weil der HTML-formatierte Name bereits im HTML Kontext ist.
Ein anderer Kontextwechsel wäre z.B. Benutzereingabe zu SQL Query.
Rolf
sumpsi - posui - obstruxi