PHPWales 2020 - June 3rd to June 4th

session_destroy

(PHP 4, PHP 5, PHP 7)

session_destroyBir oturumla ilişkilendirilmiş tüm veriyi yokeder

Açıklama

session_destroy ( void ) : bool

session_destroy() işlevi geçerli oturumla ilişkilendirilmiş tüm veriyi yok eder. Oturumla ilişkilendirilmiş küresel değişkenleri ve oturum çerezini tanımsız yapmaz. Oturum değişkenlerini tekrar kullanmak için session_start() çağrısı yapılmalıdır.

Kullanıcı çıktısını günlüğe kaydetmek gibi bir amaçla oturumu topyekün öldürmek için oturum kimliğinin de tanımsız yapılması gerekir. Eğer oturum kimliğini yaymak için bir çerez kullanılmışsa (öntanımlı olarak böyledir), oturum çerezinin de silinmesi gerekir. Bunun için setcookie() kullanılabilir.

Dönen Değerler

Başarı durumunda TRUE, başarısızlık durumunda FALSE döner.

Örnekler

Örnek 1 - Bir oturumun $_SESSION ile yokedilmesi

<?php
// Oturumu ilklendirelim.
// session_name("birisim") kullanacaksanız tam sırasıdır!
session_start();

// Oturum değişkenlerinin tamamını tanımsız yapalım.
$_SESSION = array();

// Oturum öldürülmek istenirse oturum çerezinin de silinmesi gerekir.
// Dikkat: Bu sadece oturum verisini değil, oturumu da yok edecektir!
if (isset($_COOKIE[session_name()])) {
    
setcookie(session_name(), ''time()-42000'/');
}

// Son olarak oturumu yok ediyoruz.
session_destroy();
?>

Notlar

Bilginize:

session_unset() işlevini sadece $_SESSION kullanmayan eski kodlarda kullanın.

Ayrıca Bakınız

add a note add a note

User Contributed Notes 3 notes

up
49
Praveen V
7 years ago
If you want to change the session id on each log in, make sure to use session_regenerate_id(true) during the log in process.

<?php
session_start
();
session_regenerate_id(true);
?>

[Edited by moderator (googleguy at php dot net)]
up
24
Jack Luo
5 years ago
It took me a while to figure out how to destroy a particular session in php. Note I'm not sure if solution provided below is perfect but it seems work for me. Please feel free to post any easier way to destroy a particular session. Because it's quite useful for functionality of force an user offline.

1. If you're using db or memcached to manage session, you can always delete that session entry directly from db or memcached.

2. Using generic php session methods to delete a particular session(by session id).

<?php
$session_id_to_destroy
= 'nill2if998vhplq9f3pj08vjb1';
// 1. commit session if it's started.
if (session_id()) {
   
session_commit();
}

// 2. store current session id
session_start();
$current_session_id = session_id();
session_commit();

// 3. hijack then destroy session specified.
session_id($session_id_to_destroy);
session_start();
session_destroy();
session_commit();

// 4. restore current session id. If don't restore it, your current session will refer to the session you just destroyed!
session_id($current_session_id);
session_start();
session_commit();

?>
up
4
JBH
2 years ago
I'm using PHP 7.1 and received the following warning when implementing Example #1, above:

    PHP message: PHP Warning:  session_destroy(): Trying to destroy uninitialized session in...

What I discovered is that clearing $_SESSION and removing the cookie destroys the session, hence the warning.  To avoid the warning while still keeping the value of using session_destroy(), do this after everything else:

    if (session_status() == PHP_SESSION_ACTIVE) { session_destroy(); }
To Top