· 6 years ago · Jul 05, 2019, 06:36 AM
1class Session implements SessionHandlerInterface{
2private $db;
3private $id;
4private $last_time;
5
6public function close (){//Cierra la sesión actual
7 $this->db = null;
8 return true;
9}
10public function create_sid (){//Devuelve un nuevo ID de sesión
11 $sessionId = parent::create_sid();
12 return $sessionId;
13}
14public function destroy ( $session_id ){//Destruir una sesión
15 $d = $this->db->delete('z_sessions',[
16 'sessions_id[=]'=>'session_id'
17 ]);
18 $this->db->exesent(['session_id'=>$session_id]);
19 return ($this->db->affectedRows > 0)?true:false;
20}
21public function gc ( $maxlifetime ){//Eliminar las sesiones antiguas
22 $c = time() - $maxlifetime;
23 $this->db->delete('z_sessions',[
24 'last_activity[<]'=>'maxlife'
25 ]);
26 $this->db->exesent(['maxlife'=>$c]);
27 return ($this->db->affectedRows > 0)?true:false;
28}
29public function open ( $save_path , $session_name ){//Inicializar una sesión
30 $this->db = new db();
31 return true;
32}
33public function read ( $session_id ){
34 $ss = $this->db->select('*','z_sessions',['sessions_id[=]'=>$session_id]);
35 if($ss){
36 $r = $this->db->get_result();
37 if(!empty($r)){
38 return $r->sdata;
39 }
40 }
41 return "";
42}
43public function write ( $session_id , $session_data ){
44 $this->last_time = time();
45 $fecha = insertFecha();
46 $this->db->replace('z_sessions',[
47 'sessions_id'=>'sessions_id',
48 'ip_address'=>'ip_address',
49 'user_agent'=>'user_agent',
50 'sdata'=>'sdata',
51 'last_activity'=>'last_activity',
52 'fechas_id'=>'fechas_id'
53 ]);
54 $this->db->exesent([
55 'sessions_id'=>$session_id,
56 'ip_address'=>iPclient()."'",
57 'user_agent'=>$_SERVER['HTTP_USER_AGENT'],
58 'sdata'=>$session_data,
59 'last_activity'=>$this->last_time,
60 'fechas_id'=>$fecha
61 ]);
62 return true;
63} }
64
65$sh = new Session;
66session_set_save_handler($sh, true);
67
68CREATE TABLE IF NOT EXISTS z_sessions (
69sessions_id varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,
70ip_address varchar(45) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
71user_agent text COLLATE utf8mb4_unicode_ci,
72 sdata text COLLATE utf8mb4_unicode_ci NOT NULL,
73 last_activity int(11) NOT NULL,
74 fechas_id bigint UNSIGNED NOT NULL,
75 UNIQUE KEY z_sessions_id_unique (sessions_id),
76KEY z_sessions_fechas_id_foreign (fechas_id)
77) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
78
79if($_SESSION['algo'] == 1){ echo "hay Algo"; }
80else{ echo "No hay nada"; }