UPDATE(新增的代码,做读/写类)PHP会话只写入部分信息表
更新:我已经注释掉了在PHP行。 ini文件允许会话被写入文件而不是数据库,并且我将session_start()放在正确的位置上。所以我已经能够排除其他地方的代码。只有在使用数据库存储会话时才会出现此问题,这是一项要求,所以如果有任何其他想法可以帮助我解决此问题,请告诉我。谢谢。
原贴: 我有困难,搞清楚发生了什么事情就到这里,希望有人能帮助我。
我一直在使用php,mysql将会话信息存储在数据库中。该应用程序只在本地主机,Vista上运行。在php.ini文件中,我注释掉了“session.save_handler = files”这一行,并使用一个php类来处理会话的写入/读取等。
我的登录过程是这样的:通过登录提交登录凭证。 PHP。 login.php调用loginprocess.php。 loginprocess.php验证用户,如果有效开始一个新的会话并将数据添加到会话变量,那么它将重定向到index.php。
这是问题所在。 loginprocess.php页面有许多会话变量被设置为$ _SESSION ['account_id'] = $ account_id;等等,但是当我去index.php并做一个var_dump($_SESSION)
它只是说“array()为空”。但是,如果我在loginprocess.php中执行var_dump($_SESSION)
,那么在重定向行header("Location: ../index.php");
之前,它会显示会话变量中的所有数据。如果我查看存储会话信息的数据库,session_id字段,created_ts字段和expires字段中有数据,但session_data字段中没有任何内容,过去,这是所有会话数据的字段被存储。
我怎么能够在loginprocess.php中var_dump会话,但数据不存在于数据库表中,它使用某种缓存?我清理了我的饼干等等,但没有改变。
为什么session_id被写入表中,但实际的会话数据不是?
任何想法表示赞赏。谢谢。
我们将不得不更多地了解您用于保存会话数据的过程。你说你正在将它存储在数据库中 - 你的会话如何设置读/写处理程序? – Johrn 2010-05-18 18:06:02
我已经使用读/写的类对象更新了帖子。谢谢你的帮助。 – Ronedog 2010-05-18 20:16:07