session_set_cookie_params() Einstellung zwei cookies nach redirect

Ich verwende eine leicht modifizierte version des login-Scripte gefunden hier, und haben, laufen Sie in Verhalten, das ich denke, dass kommt von session_set_cookie_params() , verstehe ich nicht.

Ich bin mit sessions, cookies und header() umleiten Benutzer auf eine login-Seite, dann zurück zu der Seite, die Sie angefordert. Mein problem war, dass, obwohl die erste Seite und die login-Seite verwenden Sie die gleiche Funktion zum verarbeiten von sessions und cookies, zwei separate cookies wurden gesetzt; eine für www.example.com und eine für example.com. Dies verhindert eine session-variable setzen, die auf der ersten Seite Lesen Sie nach dem login.

Hier ist ein Beispiel-code aus jeder angeforderten Seite:

requireSSL();
sec_session_start();
if(login_check($mysqli) == false) {
    $_SESSION['origURL'] = $_SERVER['REQUEST_URI'];
    header('Location: https://www.example.com/login.php');
    exit();
}

Hier sind die Funktionen:

function requireSSL() {
    if($_SERVER["HTTPS"] != "on") {
        header("Location: https://" . $_SERVER["HTTP_HOST"] . $_SERVER["REQUEST_URI"]);
        exit();
    }
}

function sec_session_start() {
    $session_name = 'sec_session_id'; //Set a custom session name
    $secure = true; //Set to true if using https.
    $httponly = true; //This stops javascript being able to access the session id. 
    ini_set('session.use_only_cookies', 1); //Forces sessions to only use cookies. 
    $cookieParams = session_get_cookie_params(); //Gets current cookies params.
    session_set_cookie_params($cookieParams["lifetime"], $cookieParams["path"], $cookieParams["domain"], $secure, $httponly);
    session_name($session_name); //Sets the session name to the one set above.
    session_start(); //Start the php session
    session_regenerate_id(true); //regenerated the session, delete the old one.     
}

Obwohl ich war in der Lage zu "reparieren" dieses Verhalten durch explizite Angabe einer Domäne in session_set_cookie_params() (z.B. "example.com") würde ich Liebe zu verstehen, warum die beiden cookies, die wurden gesetzt in den ersten Platz. Danke!

InformationsquelleAutor Grenoble | 2013-04-23

Schreibe einen Kommentar