本文实例讲述了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程序设计有所帮助。