echo $begrüßung;
Bist du derjenige, der die Session-Textdatei anlegt und die Daten reinschreibt? Dann musst du auch dafür sorgen, dass du Zeichen mit Sonderbedeutung von denen in den Nutzdaten unterscheiden kannst.
Ja, indem ich session_start() aufrufe.
Da besteht kein zwingender Zusammenhang. Die Verwaltung der Sessiondaten ist aus der Sicht des Script komplett uninteressant. Wenn du dir einen eigenen Session-Handler schreibst, der seine Daten beispielsweise in einer XML-Datei ablegt, dann kann es nicht Aufgabe des Scripts sein, in diesem Fall eine andere Sonderzeichenbehandlung vorzunehmen. Es weiß nichts darüber, wie die Daten abgelegt werden, und was dabei zu beachten ist. Es sieht nur das Array $_SESSION, das wie ein ganz normales Array aussieht (und ruft außerdem noch eine "ominöse" Funktion namens session_start() auf). Alles andere liegt außerhalb seines Fokus.
Es handelt sich um einen serialisierten Array, der Strings in Anführungsstriche setzt. Zudem notiert er zuvor die Länge des Strings. Es ist nun denkbar, das Anführungszeichen eine Auswirkung als Sonderzeichen haben. Da wäre addslashes() durchaus eine denkbare Möglichkeit und nicht einfach ins Blaue geraten.
Du weißt nicht, wie die Zeichen mit besonderer Bedeutung so notiert werden, dass sie ihre Sonderbedeutung verlieren, siehst aber addslashes() als probates Mittel an? Na ich weiß ja nicht ...
"trial and error" ist in Sicherheitsfragen immer nur die zweitbeste Lösung, da man nicht alle Möglichkeiten durchspielen kann. Besser ist es, zu wissen, wie etwas abgearbeitet wird. Und das ist meine Frage. Aber da scheinst du ja auch kein näheres Wissen zu haben.
Das scheint nur so. Zunächst erstmal: Es ist keinerlei Behandlung seitens des Script erforderlich. Greif einfach lesend und schreibend auf $_SESSION zu, so wie du es bei jedem anderen Array auch machen würdest. Der Session-Handler kümmert sich um die ordnungsgemäße und sichere Speicherung der Daten.[*]
Der Rest ist Wissen über Sinn und Zweck von Quotierung und Maskierung bzw. in diesem Fall dem Speichern von strukturierten Daten in einem unstrukturierten Container (hier: eine Textdatei) mit Hilfe von Trennzeichen. Damit diese Trennzeichen nicht mit Zeichen in Nutzdaten verwechselt werden, sind letzere gesondert zu notieren. Für alle anderen Zeichen besteht diese Notwendigkeit nicht. Es kommt also bei solch einer Speicherung nur auf die Trennzeichen an. Wenn man sich über die Art der Ersatzdarstellung informieren möchte, bzw. ob das System diese selbständig berücksichtigt, muss man also vorwiegend diese Zeichen betrachten. Notiert der Session-Handler diese Zeichen in einer besonderen Form, kann man davon ausgehen, dass er das auch bei allen anderen Sonderzeichen korrekt vornimmt. Täte er das nicht, gäbe es bei einem solch verbreiteten System wie PHP und innerhalb dessen an solch einer prominenten Stelle, wie es die Sessions sind, schon genügend Bugreports.
[*] Für die Session-Dateien sind gegebenenfalls Maßnahmen zu ergreifen, um sie vor Beeinflussung durch den durch andere Scripte mit anderen Konfigurationsdaten gestarteten Garbage Collector zu schützen. Dies kann man erreichen, wenn man für jedes Projekt, das auf dem Server läuft, einen eigenen session.save_path konfiguriert.
echo "$verabschiedung $name";