Home >Backend Development >PHP Tutorial >Store session in database
CREATE TABLE sessions ( id CHAR(32) NOT NULL, data TEXT, last_accessed TIMESTAMP NOT NULL, PRIMARY KEY (id) );
<?php /** * Created by PhpStorm. * User: michaeldu * Date: 15/7/14 * Time: 下午2:57 */ $sdbc = NULL; function open_session() { global $sdbc; $sdbc = mysqli_connect('192.168.31.172', 'root', 'root', 'phpadvanced'); return true; } function close_session() { global $sdbc; return mysqli_close($sdbc); } function read_session($sid) { global $sdbc; $q = sprintf('SELECT data FROM sessions WHERE ', mysqli_real_escape_string($sdbc, $sid)); $r = mysqli_query($sdbc, $q); if (mysqli_num_rows($r) == 1) { list($data) = mysqli_fetch_array($r, MYSQLI_NUM); return $data; } else { return ''; } } function write_session($sid, $data) { global $sdbc; $q = sprintf('REPLACE INTO sessions (id, data) VALUES ("%s", "%s")', mysqli_real_escape_string($sdbc, $sid), mysqli_real_escape_string($sdbc, $data)); $r = mysqli_query($sdbc, $q); return true; } function destroy_session($sid) { global $sdbc; $q = sprintf('DELETE FROM session WHERE', mysqli_real_escape_string($sdbc, $sid)); $r = mysqli_query($sdbc, $q); $_SESSION = array(); return true; } function clean_session($expire) { global $sdbc; $q = sprintf('DELETE FROM sessions WHERE DATE_ADD(last_accessed, INTERVAL %d SECOND) < NOW()', (int)$expire); $r = mysqli_query($sdbc, $q); return true; } session_set_save_handler('open_session', 'close_session', 'read_session', 'write_session', 'destroy_session', 'clean_session'); session_start();
<?php /** * Created by PhpStorm. * User: michaeldu * Date: 15/7/14 * Time: 下午3:14 */ require('db_session.inc.php'); ?> <!DOCTYPE HTML> <html> <head> <title>colour_blue</title> <meta name="description" c /> <meta name="keywords" c /> <meta http-equiv="content-type" c /> <link rel="stylesheet" type="text/css" href="/phpadvanced/02developwebapplication/style/style.css" title="style" /> </head> <body> <?php if(empty($_SESSION)) { $_SESSION['blah'] = 'umlaut'; $_SESSION['this'] = 3615684.45; $_SESSION['that'] = 'blue'; echo '<p>Session已存储</p>'; } else { echo '<p>SESSION已存在, <pre class="brush:php;toolbar:false">'.print_r($_SESSION, 1).''; } if(isset($_GET['logout'])) { session_destroy(); echo '
会话结束
'; } else { echo '登出'; } echo '会话数据:
'.print_r($_SESSION, 1).''; ?>