【问题标题】:Cookies being deleted on redirect重定向时删除的 Cookie
【发布时间】:2012-08-04 04:21:07
【问题描述】:

我的 cookie 有问题。

基本上我正在尝试将用户的会话 ID 存储为 cookie,如下所示:

 setcookie("CheckoutSessionID",session_id(),time()+3600);

这在我的网站上运行良好,cookie 具有正确的值并且有效时间足够长。但是,我的网站会重定向到 PayPal,因此用户可以确认付款。然后用户被重定向回我的网站。当用户被重定向回我的网站时,所有 cookie 变量都消失了。

print_r($_COOKIE)var_dump($_COOKIE) 等没有值。这仅在被定向到 PayPal 后才会发生。

关于为什么会发生这种情况的任何想法?

提前感谢所有帮助,我很难过!

【问题讨论】:

  • session_id() 返回的函数是什么?
  • 当你回显时,使用echo $_COOKIE["CheckoutSessionId"]
  • session_id() 正在返回正确的会话 ID,并且在我设置 cookie 后,我能够在我的所有页面上输出 $_COOKIE["CheckoutSessionID"] 就好了。但是,一旦用户从 PayPal 重定向,所有 cookie 都消失了。
  • 另外,这不仅仅是返回特定页面的问题,如果您取消 PayPal 输入并返回到网站上另一个非常基本的页面,也会发生这种情况。所有的cookies又消失了。
  • 请记住 httpshttp 之间存在差异,因为它们是 cookie 的不同域。如果您的结帐页面是 ssl 安全的,则会发生到 paypal 的重定向,并且 paypal 会重定向到非 ssl 安全的页面,这可能是 cookie 丢失的原因。

标签: php cookies


【解决方案1】:

好的,我已经深入挖掘并意识到我之前的一个问题是相关的:

PHP sessions and session_start()

基本上我遇到了问题,因为当我去 PayPal 并返回时,PHP 会话被删除了。但是,我相信这实际上是由于会话 COOKIE 被破坏,而不是整个会话造成的。

我也在这里找到了这个话题:Do PHP sessions get lost when directing to a payment gateway?

有人给出的答案建议使用带有返回 URL 的 GET 请求来发回数据,而不是使用 cookie 或会话。

我首先使用 cookie 的全部原因是保存用户的会话 ID,因为会话无法正常工作,所以基本上我只是将返回 URL 设置为如下所示:

mydomain.co.uk/mypage.php?SessionID=[会话ID在这里] 然后获取它然后将用户的会话ID设置为它。

排序!现在......我的意思是,由于 cookie/会话无法正常工作,我可能最终会碰到另一堵砖墙。

感谢大家的帮助:)

【讨论】:

    【解决方案2】:

    实际上无论发生什么(cookie 为空),逻辑上都是正确的。当您提交页面/发出请求时,浏览器会从客户端计算机发送cookie 与请求,以便您可以在cookie 变量中找到cookie

    但是,一旦您将用户重定向到另一个外部页面/站点并再次返回到您的页面,那么您不应该在 cookie 变量中获得 cookie,因为(在您的情况下)当用户返回时您来自paypalpaypal 的站点未随请求一起提交cookie

    在这种情况下,您可以在将用户重定向到 paypal 之前将数据保存在数据库中,并且一旦用户返回您的站点,您就可以从数据库中检索该数据。

    【讨论】:

    • 你能判断它是否是同一个用户 - 将特定的 cookie 发送给特定的用户吗?
    【解决方案3】:

    我在从 Paypal 重定向后删除了类似的问题 cookie。

    我花了一段时间才弄清楚问题出在哪里。

    Samesite=**"Strict"** // Removes cookies after redirect from Paypal.
    
    Samesite=**"Lax"** // does not remove cookies after redirect from Paypal. 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-12-22
      • 2010-11-19
      • 2012-11-06
      • 2016-08-12
      • 2013-03-29
      • 1970-01-01
      • 2012-08-15
      • 2013-07-08
      相关资源
      最近更新 更多