Problem beim Übertragen einer Session-ID
Hallo zusammen!
Ich möchte im Rahmen einer Session Daten von einer Webseite auf die nächste übertragen.
In meinem Quelltext steht daher php-codiert folgender Link (als Javascript & nicht-Javascript-Version):
<php? //... vorher kommt noch einiges ...
echo "<script>\n";
echo "link1=\"javascript:location.replace('seite2.php?" . session_id() . "')\";\n";
echo "link2=\" <a href=\" + link1 + \">Weiter</a>.\";\n";
echo "document.write(link2);\n";
echo "</script>\n";
echo "<noscript>\n";
echo "<a href=\"seite2.php?" . session_id() . "\">Weiter</a>.\n";
echo "</noscript>\n";
?>
Ruft man die Seite auf, so wird der Link nicht angezeigt und in der Statusleiste erscheint eine Javascript-Fehlermeldung.
Schaut man sich den an den Browser gelieferten Quelltext an, so sieht man dass die "session_id()" aus irgendeinem Grunde mit "PHPSESSID=..." beginnend noch einmal angehängt wird, und das liefert einen falschen und für Javascript nicht interpretierbaren Link:
<script>
link1="javascript:location.replace('seite2.php?2964ff8f7591b6e20026ae2 8f39c4e0b')";
link2=" <a href=" + link1 + ?PHPSESSID=2964ff8f7591b6e20026ae28f39c4e0b">Weiter</a>.";
document.write(link2);
</script>
<noscript>
<a href="seite2.php?2964ff8f7591b6e20026ae28f39c4e0b&PHPSESSID=2964ff8f75 91b6e20026ae28f39c4e0b">Weiter</a>.
</noscript>
Erst nach einem Reload der Seite wird diese richtig angezeigt, der Link funktioniert dann wie gewünscht und der Code stimmt auch:
<script>
link1="javascript:location.replace('seite2.php?2964ff8f7591b6e20026ae2 8f39c4e0b')";
link2=" <a href=" + link1 + ">Weiter</a>.";
document.write(link2);
</script>
<noscript>
<a href="seite2.php?2964ff8f7591b6e20026ae28f39c4e0b">Weiter</a>.
</noscript>
Woran liegt dieses merkwürdige Verhalten? Wie bekommt man es hin, dass die Seite gleich beim ersten Aufruf korrekt angezeigt wird?
Ist vielleicht das "?" zwischen URL und Session-ID schuld? Wenn ja, mit welcher Kodierung kann man es ersetzen?
Vielen Dank im Voraus und noch schöne Rest-Pfingsten.
Herbert
|