php - 如何在 PHP 中重新初始化 session ?

标签 php session

我正在尝试将现有的支付平台集成到我的网上商店中。交易成功后,支付平台向我的应用程序中的一个 URL 发送请求,并在查询参数中包含交易 ID。

但是,我需要做一些后处理,例如发送订单确认等。为此,我需要访问用户的 session ,因为那里存储了很多与订单相关的信息。为此,我将 session_id 包含在初始请求 XML 中,并在事务完成后执行以下操作:

$sessionId = 'foo'; // the sessionId is succesfully retrieved from the XML response
session_id($sessionId);
session_start();

上面的代码工作正常,但是 $_SESSION 仍然是空的。我是不是忽略了什么或者这根本不可能?

编辑:

谢谢大家的回答。问题还没有解决。如前所述,奇怪的是我可以使用属于下订单用户的 session_id 成功启动新 session 。还有其他想法吗?

最佳答案

不是您真正想要的,但是在将客户发送到付款服务之前,您不需要将订单保存到数据库中吗?当您收到付款确认时,最好在订单的后处理中依赖持久化数据。

依赖 session 是不可靠的,因为您不知道此确认需要多长时间(通常是即时的,但在极少数情况下会延迟)。

此外,如果您的网络服务器在此期间重新启动,将使您丢失相关数据。

第三个问题是,如果您有一个负载平衡解决方案,具有单独的 session 管理(非常常见),那么您将无法保证支付服务器和您的客户端将到达同一网络服务器(因为粘性通常是来源-基于 IP)。

关于php - 如何在 PHP 中重新初始化 session ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/325836/

相关文章:

java - 是否有用于解码 php session 数据的 Java 库?

java - ADF session 超时自动重定向而不弹出对话框

php - PHP/MySQL 搜索引擎的 session 问题

php - 使用一个已知变量对 3 个表进行内连接

php - 警告:mysqli_query()至少需要2个参数,第3行的D:\XAMPP\htdocs\***\includes\users.php中给出1个参数。

php - Paypal IPN INVALID 消息 当有特殊字符时

php - 文件API上传文件

php - 使用 ImageMagick 从 SVG 转换为 PNG 时裁剪图像

session - 使用 OpenSSL 的 FTP 传输连接上的 TLS/SSL session 恢复

php - 使用 session->set_flashdata 导致 502 Bad gateway 错误