首页 > 解决方案 > 防止用户在未完成表单的情况下访问提交页面

问题描述

假设我example.com/contactexample.com/submitted. 理论上,任何人当前都可以example.com/submitted直接访问,尽管由于显示的消息这并不理想。7年前有这个问题,但其中的答案不起作用。

理论上,表单页面的内容并不重要,只要它被发布即可。我不想回显提交页面的内容,因为它是完整的。我只需要一些简单的东西,比如推荐人不是example.com/formPOST方法。

example.com/submitted我只需要在用户实际提交某些内容时才允许访问。我已经尝试过 PHP 和 htaccess 方法(首选 PHP),但我发现没有任何效果。在同一页面上处理将消除此问题,但提交的页面包含完全不同的内容。

任何建议都将不胜感激,因为我在任何地方都找不到有效的答案。

标签: php

解决方案


让您action的表单example.com/contact指向,example.org/submitted以便表单内容发布到您的submitted页面。

然后,在您的submitted页面上,检查方法,并重定向到contacton GET(或者更好的是,所有不是的POST):

if ($_SERVER['REQUEST_METHOD'] !== 'POST')
    header("Location: http://example.com/contact");
else if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST)) {
    // validate input
    // save to your CSV
    // display `submitted` page
}

推荐阅读