将PHP 5.3会话存储到PostgreSQL 8.4中


Storing PHP 5.3 sessions into PostgreSQL 8.4

我使用CentOS 6.0 Linux 64位与股票包:

# rpm -qa|grep php
php-cli-5.3.2-6.el6_0.1.x86_64
php-5.3.2-6.el6_0.1.x86_64
php-xml-5.3.2-6.el6_0.1.x86_64
php-pgsql-5.3.2-6.el6_0.1.x86_64
php-pear-1.9.0-2.el6.noarch
php-pdo-5.3.2-6.el6_0.1.x86_64
php-common-5.3.2-6.el6_0.1.x86_64
# rpm -qa|grep postgres
postgresql-devel-8.4.7-1.el6_0.1.x86_64
postgresql-docs-8.4.7-1.el6_0.1.x86_64
postgresql-libs-8.4.7-1.el6_0.1.x86_64
postgresql-8.4.7-1.el6_0.1.x86_64
postgresql-server-8.4.7-1.el6_0.1.x86_64

,并想改变我自己的PHP脚本从使用 $ _SERVER(‘REMOTE_USER) 使用 $ _SESSION ,但是对PHP会话没有任何经验。

我希望将(相当广泛的)用户数据存储到在$_SESSION中只保存一个"user id"。

然而,这个文档说"这个扩展被认为是未维护和死亡的"。

有谁有什么建议吗?

也许我可以保存会话数据到数据库自己(以及如何)?

你可以用自己的方式重写PHP的会话保存/加载处理程序:http://php.net/manual/en/function.session-set-save-handler.php

这允许您将会话数据保存到数据库中,或者如果您愿意,将其刻到石碑上。只要代码正确地发送/接收会话数据,底层存储介质/数据库的选择是无关紧要的。

简体版:

sql("INSERT INTO sessions (session,userid) VALUES('".json_encode($_SESSION["toomuchuserinfo"])."','".$_SESSION['userid']."');");
$r=sql("SELECT session FROM sessions where userid='".$_SESSION['userid']."';");
$_SESSION["toomuchuserinfo"]=json_decode($r[0][0]);