我遇到了一些奇怪的问题。
<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>
session_start();
$eepasts = (isset($_POST['email']) ? $_POST['email'] : null);
$_SESSION['eepasts'] = $eepasts;
header("refresh:5;url=https://buy.stripe.com/stripepaymentlinkishere");
session_start();
echo $_SESSION['eepasts'];
所以,在条纹付款后,我转到这个 emailConfirmation.php 文件,我看到这个 $_SESSION['eepasts'] 是空的,所以我丢失了数据。 但奇怪的是 - 我只在第一次尝试时丢失数据 - 当我重新加载页面并再次执行所有这些操作时,一切正常。因此,当我打开隐身模式并访问我的网站时,付款后我会丢失会话数据,但在重新加载(不关闭隐身模式)并再次执行此过程后,一切正常。
有什么想法吗?谢谢!
我看到也有一些类似的错误。我也听说过 webhook,但不太了解它们是如何工作的(抱歉,我只是一个程序员爱好者)。主要是我想在 $_SESSION 中只存储电子邮件地址,所以,我希望我可以只用这个逻辑来完成:
谢谢!
您可能在
www
子域和裸域上提供页面(无需将其中一个重定向到另一个),您在其中一个域上启动该过程,但 Stripe 中的重定向 URL 设置为另一个域。除非您单击地址栏,否则您甚至可能看不到差异,因为 Chrome 现在默认隐藏 www
部分。
一般来说,最好只有一个规范 URL(也有利于 SEO)。这意味着,您应该决定是否需要
www
,然后设置您的网络服务器,以便它将另一个服务器重定向到您想要的服务器。因此,如果您不想拥有 www
,那么您需要提供从 www
到裸域的重定向(如果您确实想要 www
,反之亦然)。否则,您最终可能会遇到更多问题,例如 localStorage
也会在两者之间分开。
这将解决您的问题并避免未来的问题。