【问题标题】:Why can't I set a cookie in my Paypal IPN file为什么我不能在我的 Paypal IPN 文件中设置 cookie
【发布时间】:2017-11-19 10:12:52
【问题描述】:

我的 Paypal ipn 文件工作正常 - 一旦验证,我可以将付款人添加到我的 sql 数据库并写入我服务器上的日志文件,但 setcookie 似乎不起作用。我想简单地设置一个标志,这样我就知道这个人已经付款了。 我还能如何设置标志以便我的 Javascript 代码知道他们已经付款?

【问题讨论】:

  • setcookie 仅在页面加载后设置 cookie(如果我没记错的话)。这可能是您的问题的原因。
  • 您可以将其放入会话中,然后在您的 JS 中添加类似 var isPaid = <?= !empty($_SESSION['paid']) ? "true" : "false"; ?>; 的内容 - 它有点脏但应该可以完成这项工作。

标签: javascript php paypal-ipn setcookie


【解决方案1】:

IPN 请求由 PayPal 服务器发出,而不是由用户的网络浏览器发出。您不能在未发出请求的用户代理中设置 cookie!

要将 PayPal 用于会员系统,您需要做几件事:

  • 拥有使用数据库的用户登录系统。希望你已经有了这个!在包含用户的数据库表中包含一个支付的列。

  • 在付款中包含一些数据,以识别正在付款的用户。例如,在 invoice 字段中包含用户 ID。

  • 当您收到经过验证的 IPN 时,从 invoice 字段中读取用户 ID 并更新数据库中的相应行。

【讨论】:

    【解决方案2】:

    我找到了这个解决方案,如果它确实是在您检查之前没有设置 cookie 的服务器:

    setcookie('uname', $uname, time()+60*30);
    $_COOKIE['uname'] = $uname;
    

    https://stackoverflow.com/a/3230167/7924393

    如果有帮助的话。

    【讨论】:

    • 不,这根本没有帮助。正如我在回答中提到的,IPN 请求完全是由错误的代理发出的——cookie 根本无法解决这个问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-10-16
    • 1970-01-01
    • 2010-12-09
    • 2011-09-07
    • 2018-02-03
    • 2018-06-13
    • 2014-11-26
    相关资源
    最近更新 更多