PHP-Session-ID und &

lolilol

Mitglied
Hallo,

ich arbeite derzeit an einem Shop-System und bin hierbei über folgendes Problem gestolpert:

Für den Warenkorb wird eine PHP-Session gestartet. Wenn Clientseitig Cookies aktiviert sind, stellt dies kein Problem dar. Wenn diese jedoch deaktiviert sind, wird die SESSION-ID nicht per Browserzeile übermittelt.

Der Apache auf dem Webserver (bytecamp.net) setzt also ein '&SESSIONID=xxx" hinter jeden Link. Erst einmal ist dies nicht XHTML Trans konform, da er die & nicht mit &.#38; oder & maskiert - damit könnte ich aber leben.

Das Problem ist eher, dass Apache maskierte & nicht erkennt! Das heisst aus dem Link "index.php?catID=3&.#38;ID=7" mach er ein "index.php?catID=&&SESSIONID=xxx#38;ID=7" , was das System völlig zerstört.
Als einzigen Ausweg scheint hier zu wirken, die & nicht zu maskieren. Hier meckert aber natürlich der W3C-Validator (und auch jeder andere) zu recht.

Kennt jemand das Problem? Und weiß, wie man ihm beikommen könnte?

Anschauen könnt ihr euch die ganze Choose unter http://www.theinsanewonderland.com/cjcompany/shop.php - derzeit sind die & unmaskiert.

Gruß,
loli

PS: Sollte dies eher in das PHP-Forum passen, bitte verschieben!
 
Mhh... danke, kann das leider gerade nicht testen, aber vielleicht kannst du mir ja gleich sagen, ob ich das per ini_set() überhaupt auf einem Miet-Host beeinflussen kann?

Gruß
loli
 
Der Trenn-String lässt sich tatsächlich gut bestimmen, leider sucht PHP, wenn er die SESSION-ID anhängen will, nach dem & und nicht nach &.#38;.

Diese beschreibung stimmt zwar nicht ganz, aber er macht dann halt aus index.php?catID=1&.#38;ID=4 ein index.php?catID=1&&.#38;SESSIONID=xxx.#38;ID=4 was völlig falsch ist und gar keinen verwertbaren Output mehr erzeugt :(

Ich dachte mit arg_separator.input könnt eich dem beikommen, aber es scheint nicht zu funktionieren.

Meine aktuellen Einstellungen sind:
PHP:
ini_set('arg_separator.output', '&.#38;');
ini_set('arg_separator.input', '&.#38;');

Jemand eine Lösung?

Gruß
loli
 
Das ist tatsächlich ein komisches Phänomen. Es scheint, als würde nur die benannte Zeichenreferenz & richtig erkannt werden.
PHP:
ini_set('arg_separator.input', '&');
ini_set('arg_separator.output', '&');

ob_start();
echo '<a href="?a=1&b=2">foobar</a>'."\n";
echo '<a href="?a=1&amp;b=2">foobar</a>'."\n";
echo '<a href="?a=1&b=2">foobar</a>'."\n";
echo '<a href="?a=1&#38;b=2">foobar</a>'."\n";
output_add_rewrite_var('foo', 'bar');
ob_end_flush();
 
Zurück