Gerçekten bir PHP Session yok?

3 Cevap php

Ben bu konuda karışık tepkiler duydum, bu yüzden bir PHP oturumu yok etmek için emin bir yangın yolu nedir?

session_start();
if(isset($_SESSION['foo']))
  unset($_SESSION['foo'];
//etc
session_destroy();

Olguların en basit olarak, bu yeterli gerçekten kullanıcı ve sunucu arasındaki oturumu sonlandırmak için istiyorsunuz?

  • Nicholas

3 Cevap

Aşağıdaki adımları size gereken bir oturumu yok etmek için:

  • oturum verileri silmek
  • oturum kimliği geçersiz

Bunu yapmak için, ben bu kullanmak istiyorum:

session_start();
// resets the session data for the rest of the runtime
$_SESSION = array();
// sends as Set-Cookie to invalidate the session cookie
if (isset($_COOKIES[session_name()])) { 
    $params = session_get_cookie_params();
    setcookie(session_name(), '', 1, $params['path'], $params['domain'], $params['secure'], isset($params['httponly']));
}
session_destroy();

Ve oturum kimliği geçersiz olduğundan emin olmak için, yalnızca komut dosyası tarafından başlatılan ediliyordu oturum kimlikleri izin vermelidir. Yani bir bayrak ayarlamak ve ayarlanmış olup olmadığını kontrol edin:

session_start();
if (!isset($_SESSION['CREATED'])) {
    // invalidate old session data and ID
    session_regenerate_id(true);
    $_SESSION['CREATED'] = time();
}

Sen ömrünü azaltmak için periyodik oturum kimliği takas ayrıca bu damgası kullanabilirsiniz:

if (time() - $_SESSION['CREATED'] > ini_get('session.gc_maxlifetime')) {
    session_regenerate_id(true);
    $_SESSION['CREATED'] = time();
}

PHP Manual bu soruyu giderir.

Siz oturum öldürmek ve aynı zamanda (çerezleri kullanıyorsanız) oturum çerezi kaldırmak gerekir.

Bu sayfayı (özellikle ilk örnek):

http://us2.php.net/manual/en/function.session-destroy.php

Ben PHP oturumları kullanmak vermedi yaptığım tek bir sitede, ben aslında oturumu yok asla.

Sorun oldukça fazla, sizin $_SESSION değişkenleri kontrol hangi noktada ve lo beğenirsin, yine başka bir oturumu oluşturduğunuz için session_start() çağırmak zorunda olmasıdır.

Dolayısıyla benim sitede sadece emin ardından every session_start() denilen sayfa ve madde kullanıcı kapattığında oturumu sadece devletin unset() bu parçalar yaptı.