【问题标题】:How not to save user input in database until paypal validates the payment?在贝宝验证付款之前,如何不将用户输入保存在数据库中?
【发布时间】:2013-06-23 15:08:55
【问题描述】:

我想使用 html 表单获取一些用户信息,提交后,用户输入存储在会话中,用户被重定向到 paypal 以执行付款操作。付款验证后,用户将再次被重定向到网站,输入将存储在数据库表中。

问题是:重定向到网站后会话变量丢失。

有人帮忙吗?

谢谢。

【问题讨论】:

  • 我看不出任何原因,为什么会话会丢失。如果用户返回到同一个主机,他的会话应该是可用的。如何创建会话?
  • 我只使用 session_start()
  • 之后,您是否会发出您网站的新页面?如果没有,sessionID 将不会保存在用户的浏览器中。
  • 当然,会话与用户会话一起工作,用户可以在所有用户空间中导航而不会丢失会话值。
  • 基于该声明,我仍然看不出任何原因,为什么会话应该在用户从 PayPal 返回时消失。

标签: php session paypal


【解决方案1】:

这是个坏主意。仅仅因为用户到达目标页面并不意味着他们在被 PayPal 发送后到达了那里。他们甚至可以欺骗Referer 标头以使其看起来像他们所做的那样。

相反,在将他们的信息发送到 PayPal 之前保存他们的信息,然后使用 PayPal 的 IPN 系统对其进行更新并将其标记为已付款。

【讨论】:

    【解决方案2】:

    根据 php 手册,session_start 从 get、post 或 cookie 中获取会话 ID。听起来您正在使用 cookie。要将 cookie 用于会话,您需要在向浏览器发送任何内容之前调用 session_start。如果这不是问题,解决方法是将会话 ID 设置为 get 参数,并根据返回页面中的参数加载会话。

    http://php.net/manual/en/function.session-start.php

    【讨论】:

    • 感谢您的重播,但我已经尝试过这个问题。
    猜你喜欢
    • 2016-03-24
    • 2011-11-17
    • 2018-07-07
    • 2015-12-01
    • 2016-01-02
    • 2018-11-24
    • 2015-05-02
    • 1970-01-01
    • 2016-02-29
    相关资源
    最近更新 更多