我目前正在使用Paypal REST API来处理具有多个计划的用户的计费协议 .
当用户注册计划时,他们需要PayPal付款 . 完成该步骤后,PayPal会将它们重定向到我提供的返回URL .
问题是,有时用户的会话在从PayPal返回时不会持久存在!
我将 session_start()
作为所有文件中的第一行,因此正在创建会话 . 在将用户带到PayPal之前,我已经验证了 $_SESSION
阵列正在填充 - 它就是在PayPal之后被带回来的时候 .
是否有更好的方法来保存这样的数据,以便我可以在从PayPal返回时更新用户帐户?或者也许有一种方法可以通过PayPalrequest传递电子邮件,以便在返回时发送回我的网站的对象中返回它?
2 回答
如果您在注册页面和PayPal重定向的页面上通过session_start()正确启动了会话,那么您的会话应该正常启动 .
假设您不是无意中closing the session或regenerating the ID,听起来似乎没有实际的"session management"问题,但可能与PayPal重定向到的URL有关 .
PHP会话的一个常见问题是,使用默认的PHP配置,它们不会在子域之间传输 .
例如,如果我在
example.com
访问您的域域,则我的会话将仅在example.com
上处于活动状态 . 如果我然后去www.example.com
,我将收到 new 会话 .您可以通过转到您的站点
example.com
或www.example.com
并检查PHPSESSID
cookie设置的域来验证这一点 . 如果它不是.example.com
(注意领先的.
),那么这就是问题=]要帮助解决此问题,您可以修改服务器的配置以将
.example.com
设置为cookie的域 . 取自this answer:我给最近一个问题的答案也应该适用于此:
当然,您可以通过
$_GET
那样传递任何您想要的标识符 .