PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Problem beim Übertragen einer Session-ID


Herbert103
05.06.2006, 11:02:00
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?2964ff8f7591b6e20026ae28f39c4e 0b')";
link2=" <a href=" + link1 + ?PHPSESSID=2964ff8f7591b6e20026ae28f39c4e0b">Weiter</a>.";
document.write(link2);
</script>
<noscript>
<a href="seite2.php?2964ff8f7591b6e20026ae28f39c4e0b&PHPSESSID=2964ff8f7591b6e20026ae28f39c4e0b">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?2964ff8f7591b6e20026ae28f39c4e 0b')";
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

xabbuh
05.06.2006, 20:59:20
HRuft man die Seite auf, so wird der Link nicht angezeigt und in der Statusleiste erscheint eine Javascript-Fehlermeldung.
Wie lautet die genaue 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, [...]
session.use_trans_sid scheint bei dir aktiviert zu sein und der Client hat die Sessionid nicht per Cookie mitgesendet.
Welchen Sinn sollte es haben, lediglich die Sessionid und nicht deren Namen mitzuschicken?

Herbert103
05.06.2006, 22:40:31
> Wie lautet die genaue Fehlermeldung?

Die Javascript-Fehlermeldung lautet:

Zeile: 34
Zeichen: 29
Fehler: Syntaxfehler

Das ist genau diese Zeile:
link2=" <a href=" + link1 + ?PHPSESSID=2964ff8f7591b6e20026ae28f39c4e0b">Weiter</a>.";

> Welchen Sinn sollte es haben, lediglich die Sessionid
> und nicht deren Namen mitzuschicken?

Ich möchte nur einen Wert von einer Webseite zur nächsten übertragen, weil ich diesen dort wieder brauche. Wie ermittle ich denn den Namen der Session, wie leite ich diesen weiter, und was hättte das für einen Vorteil gegenüber der ID?

xabbuh
06.06.2006, 09:28:41
Das ist genau diese Zeile:
link2=" <a href=" + link1 + ?PHPSESSID=2964ff8f7591b6e20026ae28f39c4e0b">Weiter</a>.";
Da fehlen Anführungszeichen. Richtig wäre es so:

link2=" <a href=" + link1 + "?PHPSESSID=2964ff8f7591b6e20026ae28f39c4e0b">Weiter</a>.";


Ich möchte nur einen Wert von einer Webseite zur nächsten übertragen, weil ich diesen dort wieder brauche. Wie ermittle ich denn den Namen der Session, wie leite ich diesen weiter, und was hättte das für einen Vorteil gegenüber der ID?
Mit der Sessionid alleine kann PHP nichts anfangen. Dafür wird auch noch der Name der Session benötigt. Beide Werte sind bereits in der Form session_name() = session_id() in der Konstanten SID enthalten.