dedlfix: URL-Kodierung vs. Link-Kodierung: Parameter-Probleme

Beitrag lesen

echo $begrüßung;

<a href='".$_SERVER['REQUEST_URI']."'>
Hier wird aber in dieser Form dann vor dem '#' abgeschnitten.

Wann passiert das? Schon im HTML-Code oder erst beim Request? Angaben hinter dem Anker sind allein für den Browser interessant. Diese sendet er _nicht_ als Bestandteil des Requests an den Server.

Allerdings geht der direkte Ursprungs-Link nicht mehr, denn die aufgerufene Datei heißt jetzt
pfad/datei.ext#parameter="wert",
und die "escapeten" Anführungszeichen lassen die weitere Verarbeitung scheitern.

Wenn du sie nicht maskiert hast, dann war das sicher das !herrliche Feature Magic Quotes. Deaktiviere es oder beseitige seine Auswirkungen. Hier sieht man mal wieder seine negativen Eigenschaften, da es generell auf alle Eingabedaten wirkt und nicht nur auf die Ausgabedaten für SQL-Querys.

Was muß ich wie kodieren, damit die Anführungszeichen am Ende "pur da stehen?

Kurze Antwort: Kontextgerecht.

Lange Antwort: Du hast Daten vorliegen, die du in einen URL-Kontext einfügen möchtest. Da du sie im Querystring einfügen möchtest, ist die Funktion urlencode() eine gute Wahl. Anschließend soll diese URL in einem HTML-Kontext zu stehen kommen, also wird da auch noch htmlspecialchars() benötigt.

echo "$verabschiedung $name";