`
dcj3sjt126com
  • 浏览: 1871062 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

将session存储到数据库中

    博客分类:
  • PHP
阅读更多
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  id="%s"', 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 id="%s"', 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" content="website description" />
    <meta name="keywords" content="website keywords, website keywords" />
    <meta http-equiv="content-type" content="text/html; charset=utf-8" />
    <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>'.print_r($_SESSION, 1).'</pre></p>';
}

if(isset($_GET['logout'])) {
    session_destroy();
    echo '<p>会话结束</p>';
} else {
    echo '<a href="sessions.php?logout=true">登出</a>';
}

echo '<p>会话数据: <pre>'.print_r($_SESSION, 1).'</pre></p>';
?>
</body>
</html>
<?php
    session_write_close();
?>

 

分享到:
评论

相关推荐

    重写session机制,将session写入数据库,建表和注释写的都很清晰,已测试

    重写session机制,默认session是以临时文件形式存储在服务器,将session写入数据库,建表和注释写的都很清晰,已测试

    php中将session保存到数据库的函数类代码.zip

    为了克服这些问题,开发者可以选择将Session数据保存到数据库中。本文将详细探讨如何实现这一功能,特别是通过编写一个自定义的Session处理器类,并使用`session_set_save_handler()`函数进行注册。 首先,让我们...

    session存储到数据库实践

    1. **配置Session处理程序**:在应用中,我们需要定义一个自定义的Session存储处理器,它将负责读写Session数据到数据库。这通常涉及实现特定的接口或继承自现有的Session存储抽象类,如在Java中的`HttpSessionStore...

    php中将session保存到数据库的函数类代码

    为了解决这个问题,我们可以将Session数据保存到数据库中,这样不仅可以实现分布式Session管理,还能提高数据的安全性和可靠性。 标题所提及的"php中将session保存到数据库的函数类代码",就是用来实现这一功能的。...

    session驱动类 session存入数据库

    session驱动类 session存入数据库 数据库存储session 用于session存入数据库

    asp.net 的Session数据库存储方式

    然而,默认情况下,Session数据是存储在内存中的,这可能会导致一些问题,比如当应用程序需要处理大量并发用户时,或者当应用程序部署在多台服务器上时,这种情况下,将Session数据存储在数据库中就显得尤为重要。...

    SESSION存放在数据库用法实例

    默认情况下,PHP将session数据存储在服务器的文件系统中,但有时出于安全或...然而,需要注意的是,这种方法可能会增加数据库的负载,因此在高流量的网站上,可能需要优化数据库查询或考虑使用专门的session存储服务。

    session 存入数据库

    3. **配置Web容器**:某些Web容器如Tomcat提供了配置选项,可以直接设置将Session信息存储到指定的数据库中。 4. **编程实现**:在每次Session创建或更新时,手动操作数据库,将Session数据写入。 ### 实现细节 - ...

    Session保存到数据库的php类分享

    这个类可以帮助开发者将用户的会话数据存储在数据库中,而不是像默认情况下存储在文件或临时目录中。这样的做法在分布式应用或负载均衡环境下尤其有用,因为它使得会话数据可以在多个服务器间共享。 知识点涉及了...

    将PHP的session数据存储到数据库中的代码实例_.docx

    【将 PHP Session 存储到数据库中的方法】 在 PHP 开发中,为了增强安全性、可扩展性和便于管理,有时会需要将 session 数据存储到数据库中,而不是默认的文件系统。以下是一个具体的实例,展示了如何使用 ...

    php mysql数据库 存储session

    因此,很多开发者选择将session数据存储到MySQL数据库中。 在实现PHP MySQL数据库存储session的过程中,我们需要做以下几步: 1. **配置session处理**:修改PHP的session配置,设置session.save_handler为"sql_...

    session模拟数据库实现用户登录功能

    当用户访问网站并进行登录操作时,服务器会生成一个唯一的session ID,并将其发送给用户浏览器,通常通过cookie存储。浏览器在后续的请求中会携带这个session ID,服务器通过这个ID找到对应的session数据。 实现...

    将PHP的session数据存储到数据库中的代码实例

    然而,在分布式服务器环境或者需要持久化存储session数据以便将来分析的场景下,开发者往往会选择将session数据存储在数据库中。 在这个文档中,作者提供了两种实现将PHP session数据存储到数据库的方法,分别适用...

    PHP将session信息存储到数据库的类实例

    在PHP中,session信息通常默认存储在服务器的文件系统中,但为了提高可扩展性、安全性或在分布式环境中的可用性,有时会将session信息存储到数据库中。本文将介绍如何创建一个自定义的PHP类来实现这一功能,利用`...

    php独立session数据库存储操作类分享_.docx

    为了解决这些问题,我们可以将Session数据存储到数据库中,以实现更安全和可靠的Session管理。本文将介绍一个PHP独立Session数据库存储操作类,它允许我们将Session信息存储在MySQL数据库中。 首先,我们来看一下...

    将图片保存到数据库中并下载

    在IT行业中,将图片保存到数据库中是一种常见的数据存储方式,尤其在构建素材库或进行内容管理时。本文将详细讲解如何实现这个功能,并提供一个实际的实例来帮助你理解。 首先,我们要知道图片通常是以二进制数据的...

    ASP.NET将Session保存到数据库中的方法

    要实现将***的Session信息保存到SQL Server数据库中,首先需要创建一个数据库来专门存储Session数据。这可以通过使用aspnet_regsql.exe工具来完成。该工具是.NET Framework提供的一个命令行工具,可以自动地在指定的...

    php从入门到精通第二版中的第十一章cookie与session存入数据库的源码测试

    然后,我们需要自定义一个Session处理函数,替代默认的Session存储机制。在PHP中,可以使用`session_set_save_handler()`来设置自定义的Session处理器。 ```php function open($save_path, $session_name) { // ...

Global site tag (gtag.js) - Google Analytics