如何仅允许通过Wordpress中的表单访问页面



我在wordpress中有一个页面,有一个表单,用户将其通过电子邮件和名称传递。注册完成后,我将在 MailChimp 上捕获您的数据,例如,将其重定向到另一个页面,该页面可以访问模拟。

但是,我希望仅通过我描述的表格访问此重定向页面。

我不希望能够直接输入重定向页面的地址。示例:domain.com.br/simulado

如果他这样做了,他会再次进入家中,或者其他什么。无论如何,如何进行此限制?

在表单中添加以下内容:

<?php
$_SESSION['keyphrase'] = substr( md5(rand()), 0, 20)
?>
<input type="hidden" name="keyphrase" value="<?php echo $_SESSION['keyphrase"; ?>">

然后在锁定的页面中:

<?php
if (!isset($_SESSION['keyphrase']) || !isset($_POST['keyphrase']) || $_POST['keyphrase'] != $_SESSION['keyphrase'])
{
unset($_SESSION['keyphrase']);
header("location: ".KICKBACK.URL);
exit;
}
// UNSET IF YOU ONLY WANT TO ALLOW ACCESS ONCE
unset($_SESSION['keyphrase']);
// WELCOME

首先,您需要在WordPress上启用PHP会话,将以下内容添加到主题的functions.php

function start_session() {
if(!session_id()) {
session_start();
}
}
add_action('init', 'start_session', 1);

接下来,您需要挂钩到联系表单 7 并设置一个$_SESSION变量来授权查看重定向页面,我们将使用挂钩wpcf7_mail_sent

function set_session_auth(){
$_SESSION["auth"] = "authorized";
}
add_action('wpcf7_mail_sent', 'set_session_auth');

最后,在您的重定向页面上,我们需要检查授权。 最简单的方法是为您的页面设置一个自定义 PHP 文件,即page-siumulado.php其中包含:

if(isset($_SESSION["auth"]) && $_SESSION["auth"] == "authorized"){
//Output your page content
} else {
echo "Sorry you do not have authorization to view this page.";
//or something to that effect.
}

请记住,这将在联系人表单 7 发送邮件时随时设置$_SESSION变量,因此,如果您将其用于其他表单,它们也将解锁页面。 您可能需要设置一些条件。

最新更新