Oturumu kapatın ve yeni bir başlangıç

0 Cevap php

Ben PHP oturumlarda bir güvenlik kontrolü uygulanmasını test ediyorum. Ben başarıyla oturum başka bir IP adresi başladı olup olmadığını tespit edebilir ve başarıyla yeni bir oturumu başlatabilirsiniz. Ancak, eski oturumu verileri yeni bir içine kopyalanan alır! Meşru OWNNER için önceki oturum verileri koruyarak nasıl boş bir oturumu başlatabilirsiniz?

Bu başarısız denemeden çok sonra, şimdiye kadar benim kod:

<?php

// Security check
if( isset($_SESSION['ip_address']) && $_SERVER['REMOTE_ADDR']!=$_SESSION['ip_address'] ){
    // Check failed: we'll start a brand new session
    session_regenerate_id(FALSE);
    $tmp = session_id();
    session_write_close();
    unset($_SESSION);
    session_id($tmp);
    session_start();
}

// First time here
if( !isset($_SESSION['ip_address']) ){
    $_SESSION['ip_address'] = $_SERVER['REMOTE_ADDR'];
    $_SESSION['start_date'] = new DateTime;
}

Oturumları hakkında resmi belgeler, korkunç kafa karıştırıcı: (

Update: Ben deneme yanılma yoluyla aldım bazı bulgular post ediyorum. Onlar iş gibi görünüyor:

<?php

// Load the session that we will eventually discard
session_start();

// We can only generate a new ID from an open session
session_regenerate_id();

// We store the ID because it gets lost when closing the session
$tmp = session_id();

// Close session (doesn't destroy data: $_SESSION and file remain)
session_destroy();

// Set new ID for the following session
session_id($tmp);
unset($tmp);

// Start session (uses new ID, removes values from $_SESSION and loads the new ones if applicable)
session_start();

0 Cevap