Follow along with the video below to see how to install our site as a web app on your home screen.
Бележка: This feature may not be available in some browsers.
// Изтрива всички данни в обкръжението, свързани със сесията (глобалната променлива)
$_SESSION = array();
// Изтрива сетната бисквитка, съдържаща сесията от клиенстска страна
if (ini_get("session.use_cookies")) {
$params = session_get_cookie_params();
setcookie(session_name(), '', time() - 42000,
$params["path"], $params["domain"],
$params["secure"], $params["httponly"]
);
}
// Унищожаване на самата сесия
session_destroy();
cHuBakA каза:Това ще изртие само сесията от сайта нали? Може ли да се направи с бутон?
<a href="скрипт_изтриващ_сесията.php">Изтрий сесията</a>
<?php
namespace system\library;
class Session{
private static $instance = null;
private $className = null;
private $opt = array();
private $alive = true;
private $db = NULL;
private function __construct(){
$this->className = str_replace(__NAMESPACE__ . "\\", "", __CLASS__);
$this->opt = $this->options();
if($this->opt['sess_use_database'] == true){
$this->db = \system\core\SAL::getInstance()->db();
if(!$this->db->tableExists($this->opt['sess_table_name'])){
$r = $this->db->query($this->opt['sess_table_structure']);
}
session_set_save_handler(
array($this, '_open'),
array($this, '_close'),
array($this, '_read'),
array($this, '_write'),
array($this, '_destroy'),
array($this, '_gc')
);
}
session_start();
}
public function __destruct(){
if($this->alive){
session_write_close();
$this->alive = false;
}
}
public static function getInstance(){
if(self::$instance == null){
self::$instance = new self();
}
return self::$instance;
}
public function delete(){
if(ini_get('session.use_cookies')){
$params = session_get_cookie_params();
setcookie(session_name(), '', time() - 42000,
$params['path'], $params['domain'],
$params['secure'], $params['httponly']
);
}
session_destroy();
$this->alive = false;
}
private function _open(){return true;}
private function _close(){return true;}
private function _read($sid){
$sid = $this->db->real_escape_string($sid);
$q = "SELECT `".$this->opt['sess_table_column_2']."` FROM `".$this->opt['sess_table_name']."` WHERE `".$this->opt['sess_table_column_1']."` = '".$sid."' LIMIT 1";
$r = $this->db->query($q);
if($r->num_rows == 1){
$field = $r->fetch_assoc();
return $field[$this->opt['sess_table_column_2']];
}else{
return null;
}
}
private function _write($sid, $data){
$sid = $this->db->real_escape_string($sid);
$data = $this->db->real_escape_string($data);
$q = "REPLACE INTO `".$this->opt['sess_table_name']."` (`".$this->opt['sess_table_column_1']."`, `".$this->opt['sess_table_column_2']."`) VALUES ('".$sid."', '".$data."')";
$this->db->query($q);
}
private function _destroy($sid){
$sid = $this->db->real_escape_string($sid);
$q = "DELETE FROM `".$this->opt['sess_table_name']."` WHERE `".$this->opt['sess_table_column_1']."` = '".$sid."'";
$this->db->query($q);
$_SESSION = array();
}
private function _gc($lifetime){
$lifetime = (int)$lifetime;
$q = "DELETE FROM `".$this->opt['sess_table_name']."` WHERE DATE_ADD(`".$this->opt['sess_table_column_3']."`, INTERVAL ".$lifetime." SECOND) < NOW()";
$this->db->query($q);
}
private function options(){
return \system\core\SAL::getInstance()->MDC()->load('library/'.$this->className);
}
}