Stripe 付款链接后$_SESSION 数据丢失

问题描述 投票:0回答:1

我遇到了一些奇怪的问题。

  1. 我有表格:
<form action="goToStripe.php" method="POST">
        <div style="padding-bottom: 30px;">
            <input type="radio" name="level" value="1" checked>Beginner</input>
            <input type="radio" name="level" value="2">Intermediate</input>
            <input type="radio" name="level" value="3">Expert</input>
        </div>
        <label>E-mail:</label>
        <input type="email" name="email" /> <br>
        <input type="submit" name="submit" value="submit" />
</form>
  1. 我有一个 php 文件“goToStripe.php”:
session_start();
$eepasts = (isset($_POST['email']) ? $_POST['email'] : null);
$_SESSION['eepasts'] = $eepasts;
header("refresh:5;url=https://buy.stripe.com/stripepaymentlinkishere");
  1. 然后,付款链接完成后,会重定向到另一个文件,我尝试再次获取 $_SESSION 数据(emailConfirmation.php):
session_start();
echo $_SESSION['eepasts'];

所以,在条纹付款后,我转到这个 emailConfirmation.php 文件,我看到这个 $_SESSION['eepasts'] 是空的,所以我丢失了数据。 但奇怪的是 - 我只在第一次尝试时丢失数据 - 当我重新加载页面并再次执行所有这些操作时,一切正常。因此,当我打开隐身模式并访问我的网站时,付款后我会丢失会话数据,但在重新加载(不关闭隐身模式)并再次执行此过程后,一切正常。

有什么想法吗?谢谢!

我看到也有一些类似的错误。我也听说过 webhook,但不太了解它们是如何工作的(抱歉,我只是一个程序员爱好者)。主要是我想在 $_SESSION 中只存储电子邮件地址,所以,我希望我可以只用这个逻辑来完成:

  1. html 格式
  2. 操作文件 goToStripe.php,我将电子邮件保存到 SESSION 中并重定向到 stripe 付款链接
  3. 从 stripe 重定向到 emailConfirmation.php 文件,然后该文件将向我之前存储在 goToStripe.php 文件中的此电子邮件地址 ($_SESSION['email']) 发送一封电子邮件。

谢谢!

php session stripe-payments
1个回答
1
投票

您可能在

www
子域和裸域上提供页面(无需将其中一个重定向到另一个),您在其中一个域上启动该过程,但 Stripe 中的重定向 URL 设置为另一个域。除非您单击地址栏,否则您甚至可能看不到差异,因为 Chrome 现在默认隐藏
www
部分。

一般来说,最好只有一个规范 URL(也有利于 SEO)。这意味着,您应该决定是否需要

www
,然后设置您的网络服务器,以便它将另一个服务器重定向到您想要的服务器。因此,如果您不想拥有
www
,那么您需要提供从
www
到裸域的重定向(如果您确实想要
www
,反之亦然)。否则,您最终可能会遇到更多问题,例如
localStorage
也会在两者之间分开。

这将解决您的问题并避免未来的问题。

© www.soinside.com 2019 - 2024. All rights reserved.