当前位置: 首页 > 面试题库 >

在PHP中的数据库中设置会话

年风华
2023-03-14
问题内容

如何在php和mysql中使用数据库表中的会话?


问题答案:

您将需要创建一个像这样的对象:

class SessionHandler 
{ 
    private static $lifetime = 0;

    private function __construct() //object constructor
    { 
       session_set_save_handler(
           array($this,'open'),
           array($this,'close'),
           array($this,'read'),
           array($this,'write'),
           array($this,'destroy'),
           array($this,'gc')
       );
    }

   public function start($session_name = null)
   {
       session_start($session_name); //Start it here
   }

    public static function open()
    {
        //Connect to mysql, if already connected, check the connection state here.

        return true;
    }

    public static function read($id)
    {
        //Get data from DB with id = $id;
    }

    public static function write($id, $data)
    {
        //insert data to DB, take note of serialize
    }

    public static function destroy($id)
    {
       //MySql delete sessions where ID = $id
    }

    public static function gc()
    {
        return true;
    }
    public static function close()
    {
        return true;
    }
    public function __destruct()
    {
        session_write_close();
    }
}

然后,在session_start之前,初始化此类!

include 'classes/sessionHandlerDB.php';

$session = new SessionHandler();

$session->start('userbase');

$_SESSION['name'] = 'Robert Pitt'; //This is sent to SessionHandler::write('my_id','Robert Pitt')
echo $_SESSION['name']; //This calls SessionHandler::read($id)//$id is Unique Identifier for that

http://php.net/manual/zh/function.session-set-save-
handler.php

http://php.net/manual/zh/function.serialize.php



 类似资料:
  • 问题内容: 我正在使用新版本(3.0.0)。CodeIgniter的问题,我遇到了一个新问题,我的会话无法正常工作。我的意思是,控制器中的代码是正确的,因为没有错误,但是,当我尝试在视图中打印PHP变量时,什么也没有。 我在MySQL服务器中检查了我的表,什么也没有,我现在不出什么问题了。我把我的代码config.php。(我不太了解这个新版本中的很多内容) 我必须在“ make”会话中添加第一行

  • 问题内容: 我是Python和Django的新手。 我正在使用PostgreSQL数据库引擎后端配置Django项目,但是每个数据库操作都出现错误。例如,当我跑步时,我得到: 有人可以告诉我发生了什么吗? 问题答案: 你需要安装psycopg2Python库。 安装 下载http://initd.org/psycopg/,然后将其安装在Python PATH下 下载后,轻松解压缩tarball并:

  • MySQL、Oracle、PostgreSQL、SQL Server、MariaDB 在“据库”选项卡中,你可以设置从数据库导入窗口显示哪些数据库。这设置不是强制的。若要设置自定义数据库设置,请勾选“使用自定义数据库列表”。然后,从“名”列勾选要显示的数据库。 添加一个隐藏的数据库到列表 点击“+”按钮。 输入数据库名。 在数据库列表中勾选新添加的数据库。 从列表中移除一个数据库 在数据库列表中选

  • 在“数据库”选项卡中,你可以设置在从数据库导入窗口显示哪些数据库。这设置不是强制的。若要设置自定义数据库设置,请勾选“使用自定义数据库列表”。然后,从“数据库”列勾选要显示的数据库。 【注意】仅适用于 MySQL、Oracle、PostgreSQL、SQL Server 和 MariaDB。 添加一个隐藏的数据库到列表 点击“添加数据库到列表”按钮。 输入数据库名。 在数据库列表中勾选新添加的数据

  • MySQL、Oracle、PostgreSQL、SQL Server、MariaDB、MongoDB 在“数据库”选项卡中,你可以设置连接到服务器时导航窗格显示哪些数据库。这设置不是强制的。若要设置自定义数据库设置,请勾选“使用自定义数据库列表”。然后,从“名”列勾选要显示的数据库。如果你想连接时 Navicat 自动打开数据库,勾选“自动打开”框。 添加一个隐藏的数据库到列表 点击“+”按钮。

  • 我想设置会话点击链接,所以登录后,用户将重定向到上次访问的页面。 例如: 步骤1:用户打开主页。(seesion url设置为主页 第二步:下一步在新选项卡中,用户将打开联系人页面(再次会话变量重置) 第三步:用户进入首页,点击登录链接。(因为没有重新加载页面,所以没有设置会话) 第四步:登录后,用户将重定向到联系人页面。 但这里我想要用户被重定向到用户点击链接登录的地方。 我试着用下面的代码,但