繁体   English   中英

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

[英]How to allow page access ONLY by form in Wordpress

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

但是,我只想通过上述表格访问此重定向页面。

我不想直接在URL中输入重定向页面的地址。 示例: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);

接下来,您需要挂钩到Contact Form 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.
}

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM