本文实例讲述了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
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
|
<?php /* CREATE TABLE `ws_sessions` ( `session_id` varchar(255) binary NOT NULL default '', `session_expires` int(10) unsigned NOT NULL default '0', `session_data` text, PRIMARY KEY (`session_id`) ) TYPE=InnoDB; */ class session { // session-lifetime var $lifeTime ; // mysql-handle var $dbHandle ; function open( $savePath , $sessName ) { // get session-lifetime $this ->lifeTime = get_cfg_var( "session.gc_maxlifetime" ); // open database-connection $dbHandle = @mysql_connect( "localhost" , "root" , "" ); $dbSel = @mysql_select_db( "test" , $dbHandle ); // return success if (! $dbHandle || ! $dbSel ) return false; $this ->dbHandle = $dbHandle ; return true; } function close() { $this ->gc( ini_get ( 'session.gc_maxlifetime' )); // close database-connection return @mysql_close( $this ->dbHandle); } function read( $sessID ) { // fetch session-data $res = mysql_query("SELECT session_data AS d FROM ws_sessions WHERE session_id = '$sessID' AND session_expires > ".time(), $this ->dbHandle); // return data or an empty string at failure if ( $row = mysql_fetch_assoc( $res )) return $row [ 'd' ]; return "" ; } function write( $sessID , $sessData ) { // new session-expire-time $newExp = time() + $this ->lifeTime; // is a session with this id in the database? $res = mysql_query("SELECT * FROM ws_sessions WHERE session_id = '$sessID' ", $this ->dbHandle); // if yes, if (mysql_num_rows( $res )) { // ...update session-data mysql_query("UPDATE ws_sessions SET session_expires = '$newExp' , session_data = '$sessData' WHERE session_id = '$sessID' ", $this ->dbHandle); // if something happened, return true if (mysql_affected_rows( $this ->dbHandle)) return true; } // if no session-data was found, else { // create a new row mysql_query("INSERT INTO ws_sessions ( session_id, session_expires, session_data) VALUES( '$sessID' , '$newExp' , '$sessData' )", $this ->dbHandle); // if row was created, return true if (mysql_affected_rows( $this ->dbHandle)) return true; } // an unknown error occured return false; } function destroy( $sessID ) { // delete session-data mysql_query( "DELETE FROM ws_sessions WHERE session_id = '$sessID'" , $this ->dbHandle); // if session was deleted, return true, if (mysql_affected_rows( $this ->dbHandle)) return true; // ...else return false return false; } function gc( $sessMaxLifeTime ) { // delete old sessions mysql_query( "DELETE FROM ws_sessions WHERE session_expires < " .time(), $this ->dbHandle); // return affected rows return mysql_affected_rows( $this ->dbHandle); } } $session = new session(); session_set_save_handler( array (& $session , "open" ), array (& $session , "close" ), array (& $session , "read" ), array (& $session , "write" ), array (& $session , "destroy" ), array (& $session , "gc" )); session_start(); // etc... ?> |
希望本文所述对大家的php程序设计有所帮助。