我在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
变量,因此,如果您将其用于其他表单,它们也将解锁页面。 您可能需要设置一些条件。