Tom: Gleiche Session für 2 URLs möglich?

Beitrag lesen

Hello Henning,

die erste Frage sollte lauten "wie funktioniert der Sessionmechanismus?"

Nehmen wir mal an, Du verwendest den PHP-Standardmechanismus ausschließlich mit Cookies. Dann wird Dir beim Start einer Session vom Server passend zur Domain ein Cookie gesendet und der Browser speichert diesen ab, sofern er passend eingestellt ist. Beim nächsten Zugriff auf dieselbe Domain sendet er dem Server den Cookie mit und dieser kann daran erkennen, welcher User gerade den Request gesendet hat.

Wenn jetzt ein anderer User (anderer Client, anderer Browser) auf derselben Domain gelichzeitig surft, erhält dieser sinnvollerweise einen anderen eigenen Cookie.

Der Schlüsselvorrat der Cookies ist so groß gewählt, dass zufällige Übereinstimmungen zwischen zwei Clients nahezu ausgeschlossen sind und auch das Erraten eines Cookies äußerst schwer fällt. Hier kommt dann auch noch die Zeit ins Spiel. Ein Session-Cookie sollte nach einer möglichst kurzen Zeit ablaufen, also ungültig werden. Dies kann man bei PHP zusätzlich noch mit der Funktion
http://de2.php.net/manual/en/function.session-regenerate-id.php
unterstützen.

Da bei HTTP alles unverschlüsselt über das Netz übertragen wird, liegt hier also der Schwachpunkt. Besser ist daher die Übertragung von Zugriffs-Schlüsseln (und Daten) per HTTPS.

Das Übertragen von Cookies auf andere Seiten (Domains) wird vom Browser üblicherweise nicht unterstützt. Es ist aber sicherlich per JavaScript möglich, einen Parameter aus der einen Seite in eine andere Seite zu übernehmen. Am einfachsten geht das, wenn dies in beiden Dokumenten bereits vorbereitet ist. Dann kannst Du den eigenen Cookie auslesen und als Parameterwert in den Link/ das Action-Attribut der zweiten Seite einbauen.

<?php  ### Beispiel zur Cookieweitergabe an andere Seiten ###

session_start();
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
     "http://www.w3.org/TR/html4/loose.dtd">
<HTML>
<HEAD>
<TITLE>Cookie</TITLE>
</HEAD>

<BODY onload="alert(document.cookie); document.getElementById('c1').value=document.cookie;">

<form action="">

<input id="c1" type="text" name="cookie1">
    <input type="submit" name="btn[send]" value="senden">

</form>

</BODY>
</HTML>

Liebe Grüße aus dem schönen Oberharz

Tom vom Berg

--
 ☻_
/▌
/ \ Nur selber lernen macht schlau
http://kleine-kapelle.com