我正在尝试将我的所有会话数据保存在数据库中,并让这个类来处理所有这些,并使用session_set_save_handler进行设置。现在,我不知道这是否是因为我不完全理解这个函数背后的整个概念,但我遇到的问题是,我的会话处理程序类的read()函数是在写()函数之前调用的。这样做不好的原因是因为read()试图在数据库中查找尚未写入数据库的信息,当然,它会得到空的结果。
因此,我决定阅读session_set_save_handler背后的文档,看起来调用write()的唯一时间是会话终止或PHP关闭的时候。在我看来,这看起来很没用..。为什么有人会在最后写()或存储这些信息,然后才有机会检索它呢?
我想要做的是,当某人创建一个use会话时,这些信息将被写入数据库,并且每当我想要检查身份验证或查找用户值时,我都想检索该信息。
我是不是搞错了??我很感谢你的澄清。如果有人需要任何代码来演示我想要做的事情,我会更新它。
发布于 2013-08-30 14:05:16
在我看来,这看起来很没用..。为什么有人会在最后写()或存储这些信息,然后才有机会检索它呢?
在他们有机会找回它之前你是什么意思?
要检索它,需要调用read方法--并且在前面调用它,这样您就已经有了信息。但不知怎么的,这就是你对…的抱怨?
我是否正确地假设您对PHP会话机制的工作方式不太了解?
在每个脚本上调用session_start。如果PHP在传递给脚本的参数中找到一个会话id,它就会查找带有该id的现有会话,如果它找到了一个会话id,就会从其中读取数据。从那时起,您可以使用该数据- PHP已经将其放入超级全局数组$_SESSION中。您可以从那里访问它,也可以将新数据放入其中或更改现有数据。
然后,当脚本结束或调用session_write_close时,数据将被写回。
因此,当然,在写函数之前调用读函数。
https://stackoverflow.com/questions/18534757
复制相似问题