我们的一些客户遇到了他们丢失会话数据的奇怪情况。这总是发生在我们的付款专家ogone的重定向之后。流程如下:
在调试此问题时,我发现当用户从ogone重定向到应用程序时,会话数据会丢失。这仅在x个请求数量上发生一次。因此,当我在任何可能的浏览器中测试代码时,它似乎工作正常。我没有找到失败的付款和浏览器/付款方式/ ....之间的链接。
这是我的会话配置:
'session.name' => 'PHPSESSID',
'session.save_path' => '/var/www/app/data/session'
'session.gc_probability' => 1,
'session.gc_divisor' => 100,
'session.gc_maxlifetime' => 5400, // 90 min.
'session.cookie_lifetime' => 0,
'session.bug_compat_warn' => 'off'
会话ID也由URL中的查询参数传递。该ID在页面ogone重定向到。
中可用是否有人可以帮我解决这个痛苦的问题?
答案 0 :(得分:1)
查询参数中传递的会话ID弱于Session Fixation。
您可以做的是将会话数据存储在数据库中,比如在第i行的某个表T中;然后将值i存储在cookie中。当用户返回站点时,从cookie中检索i,然后从数据库加载会话数据。
// Store the data in the database, in whatever form you choose
$id = last_insert_id(); // Get the ID of the row in which this information is stored
// Store the id in a cookie
setcookie("session_data_row_id", $id, time() + 3600 * 24); /* expire in 1 day */
现在,您需要在需要时将数据从数据库中检索回会话
// Get the row id from the cookie
$id = $_COOKIE['session_data_row_id'];
// Use this ID and retrieve the data from the database
为什么网络存储而不是cookie存储所有数据?
更多资源: