本文实例讲述了PHP封装的数据库保存session功能类。分享给大家供大家参考,具体如下:
PHP用数据库保存session类:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
|
<?php class SafeSessionHandler implements SessionHandlerInterface { public $save_path ; public $session_name ; public $table ; public function __construct() { $this ->table = new Table( "safe_session" ); } private function session_id_parse( $session_id ) { $time = hexdec( substr ( $session_id , 0, 8)); $skey = substr ( $session_id , 8); return array ( $time , $skey ); } public function close() { loginfo( "close: " ); return true; } public function create_sid() { loginfo( "create_sid: " ); $time = time(); $skey = "" ; $char = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ" ; for ( $i =0; $i <52; $i ++) { $skey .= $char {mt_rand(0, 61)}; } $session = array ( "time" => $time , "skey" => $skey , "sval" => "" , ); $this ->table->insert( $session ); return dechex ( $time ) . $skey ; } public function destroy( $session_id ) { loginfo( "destroy: %s" , $session_id ); list( $time , $skey ) = $this ->session_id_parse( $session_id ); $this ->table->where( "time = ?" , $time )->where( "skey = ?" , $skey )-> delete (); return true; } public function gc( $maxlifetime ) { loginfo( "gc: %s" , $maxlifetime ); $this ->table->where( "time < ?" , time() - 86400 * 30)-> delete (); return true; } public function open( $save_path , $session_name ) { loginfo( "open: %s, %s" , $save_path , $session_name ); $this ->save_path = $save_path ; $this ->session_name = $session_name ; return true; } public function read( $session_id ) { loginfo( "read: %s" , $session_id ); list( $time , $skey ) = $this ->session_id_parse( $session_id ); $row = $this ->table->where( "time = ?" , $time )->where( "skey = ?" , $skey )->select()->fetch(); if ( empty ( $row )) { return "" ; } return $row [ "sval" ]; } public function write( $session_id , $session_data ) { loginfo( "write: %s, %s" , $session_id , $session_data ); $session = array ( "sval" => $session_data ,); list( $time , $skey ) = $this ->session_id_parse( $session_id ); $this ->table->where( "time = ?" , $time )->where( "skey = ?" , $skey )->update( $session ); return true; } } |
希望本文所述对大家PHP程序设计有所帮助。