Heim  >  Artikel  >  Backend-Entwicklung  >  Sitzung in der Datenbank speichern

Sitzung in der Datenbank speichern

WBOY
WBOYOriginal
2016-08-08 09:20:45973Durchsuche

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).'

'; ?>

Das Obige stellt die Speicherung von Sitzungen in der Datenbank vor, einschließlich Aspekten des Inhalts. Ich hoffe, dass es für Freunde hilfreich ist, die sich für PHP-Tutorials interessieren.

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn