阻止用户访问“表单发送确认页面”,除非他们通过表单到达那里

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

我有一个网络表单,允许用户提交数据。

注意:数据不会存储在服务器上,而是发送到电子邮件地址。

当用户单击“提交”按钮时,表单处理程序会将用户重定向到“已发送确认”页面,其中显示...“感谢您提交表单。”

header('位置:/sentconfirmation.php');

这样做的问题是,用户可以简单地在他们的浏览器中输入:(示例)mywebsite.com/sentconfirmation.php,然后截图以声称他们已经发送了表单,而实际上他们还没有发送。

有没有办法阻止用户直接访问发送的确认页面,而只有通过实际发送表单才能到达那里?

或者也许有一种方法可以屏蔽发送的确认页面的网址?

php html forms
1个回答
0
投票

是的,这是有可能实现的。在这种情况下,我很可能会使用 PHP 的会话功能。

您可以在会话中存储表单提交状态,并基于该状态,您可以允许用户访问该页面或以其他方式阻止。

我会这样做:

通过在两个页面顶部添加以下行,确保两个页面都可以使用 PHP 的会话功能:

<?php
session_start();

在重定向标头之前添加以下行:

<?php
$_SESSION['form_submitted'] = true;

您可以在重定向页面上检查该值。

<?php
session_start();

if (!isset($_SESSION['form_submitted']) || $_SESSION['form_submitted'] !== true) {
    // Redirect to the form page if the session variable is not set
    header('Location: /index.php');
    exit;
}

// Unset the session variable to prevent users from refreshing the page and seeing it again
unset($_SESSION['form_submitted']);

// Display your confirmation message
echo "Thank you for submitting your form.";

希望这有帮助。

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