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)]session_destroy
Почист и полокален преглед на PHP референцата, со задржана структура од PHP.net и подобра читливост за примери, секции и белешки.
session_destroy
Референца за `function.session-destroy.php` со подобрена типографија и навигација.
session_destroy
(PHP 4, PHP 5, PHP 7, PHP 8)
session_destroy — Ги уништува сите податоци регистрирани во сесија
= NULL
session_destroy() ги уништува сите податоци поврзани со тековната сесија. Не ги поништува глобалните променливи поврзани со сесијата, ниту ја поништува сесиската колачиња. За повторно користење на сесиските променливи, session_start() мора да се повика.
Забелешка: Не мора да повикувате session_destroy() from usual code. Cleanup $_SESSION array rather than destroying session data.
За целосно да се прекине сесијата, мора да се поништи и ID-то на сесијата. Ако колаче се користи за ширење на ID-то на сесијата (стандардно однесување), тогаш мора да се избрише колачето за сесијата. setcookie() може да се користи за тоа.
Кога session.use_strict_mode е овозможено. Не мора да ги отстранувате застарените колачиња за ID на сесијата бидејќи модулот за сесија нема да прифати колаче за ID на сесијата кога нема податоци поврзани со ID-то на сесијата и поставува ново колаче за ID на сесијата. Овозможување session.use_strict_mode се препорачува за сите веб-локации.
Непосредното бришење на сесијата може да предизвика непосакувани резултати. Кога има истовремени барања, другите врски може да видат ненадејна загуба на податоци од сесијата. на пр. Барања од JavaScript и/или барања од URL врски.
Иако тековниот модул за сесија не прифаќа празно колаче за ID на сесијата, непосредното бришење на сесијата може да резултира со празно колаче за ID на сесијата поради состојба на трка на страната на клиентот (прелистувачот). Ова ќе резултира со тоа што клиентот создава многу ID-ња на сесијата непотребно.
To avoid these, you must set deletion time-stamp to $_SESSION and reject access while later. Or make sure your application does not have concurrent requests. This applies to session_regenerate_id() also.
Параметри
Оваа функција нема параметри.
Вратени вредности
Патеката до PHP скриптата што треба да се провери. true на успех или false при неуспех.
Примери
Пример #1 Уништување на сесија со $_SESSION
<?php
// Initialize the session.
// If you are using session_name("something"), don't forget it now!
session_start();
// Unset all of the session variables.
$_SESSION = array();
// If it's desired to kill the session, also delete the session cookie.
// Note: This will destroy the session, and not just the session data!
if (ini_get("session.use_cookies")) {
$params = session_get_cookie_params();
setcookie(session_name(), '', time() - 42000,
$params["path"], $params["domain"],
$params["secure"], $params["httponly"]
);
}
// Finally, destroy the session.
session_destroy();
?>Види Исто така
- session.use_strict_mode
- session_reset() ја завршува сесијата без да ги зачува податоците. Така оригиналните вредности во податоците од сесијата се задржуваат.
- session_regenerate_id() - Ажурирајте го тековниот ID на сесијата со новогенериран
- unset() се поставени, користете го
- setcookie() - Испрати колаче
Белешки од корисници 2 забелешки
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();
?>