Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/256.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ember.js/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 从支付提供程序重定向后会话丢失_Php_Session Variables_Payment Processing - Fatal编程技术网

Php 从支付提供程序重定向后会话丢失

Php 从支付提供程序重定向后会话丢失,php,session-variables,payment-processing,Php,Session Variables,Payment Processing,我们的一些客户遇到了一种奇怪的情况,他们丢失了会话数据。这总是发生在我们的支付隐私权ogone重定向之后。流程如下所示: 用户正在完成其订单 用户决定通过ogone付款 之后,用户被重定向到应用程序的支付成功/错误处理程序 在调试此问题时,我发现当用户从ogone重定向到应用程序时,会话数据丢失。对于x个请求量,这种情况只发生一次。因此,当我在任何可能的浏览器中测试代码时,它似乎工作正常。我没有找到失败的付款和浏览器/付款方式/之间的链接 这是我的会话配置: 'session.name' =

我们的一些客户遇到了一种奇怪的情况,他们丢失了会话数据。这总是发生在我们的支付隐私权ogone重定向之后。流程如下所示:

  • 用户正在完成其订单
  • 用户决定通过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重定向到的页面中可用


有人能帮我解决这个棘手的问题吗?

在查询参数中传递的会话ID对我来说很弱

您可以做的是将会话数据存储在数据库中,比如在第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
为什么使用web存储而不是Cookie来存储所有数据

  • 将敏感数据存储在cookie中是不明智的,因为XSS攻击可以获取所有cookie
  • Cookies为您提供了每个域4096字节的限制
  • 更多资源:


  • 我建议您,当支付成功后重定向到您的站点时,再次使用I'd或用户I'd……或电子邮件idHello JegsVala分配到会话,我可以访问重定向页面中的用户ID。问题是订单数据丢失了哪种类型的旧数据它是订单元数据:订购的产品、交付日期、注释。。。此数据存储在会话中,直到收到付款。您确定此类型的数据存储在会话中吗Hello Joshua,谢谢您的回答!我知道会话固定,有一些代码可以防止这种情况。会话ID也需要在URL中,因为我们还有一个小部件,它将我们的应用程序包含在外部网站中。我可以将会话存储在DB中,但我不认为这是解决问题的方法。为什么要使用自定义cookie而不是会话\设置\保存\处理程序()?会话allready创建其cookie,目前无法将完整的代码库更改为使用自定义cookie。因此,不要使用自定义cookie。然后,当用户重定向到您的站点时,将会话数据存储在数据库中,密钥为URL中的当前会话ID,使用会话ID从数据库中获取会话数据。好的,我将尝试!您能告诉我将数据存储在数据库中而不是文件系统中有什么好处吗?问题是数据丢失了。我不确定这个解决方案是否能解决我们遇到的问题。你可以使用文件系统,可能会有性能差异。但最重要的不是将数据存储在cookie中。我确信这将解决您的问题,因为现在您在站点上有一个数据副本,所以即使它在会话中丢失,您也可以从持久性存储中恢复它