![](/img/trans.png)
[英]Only allow logged in WordPress Admin to access page (outside of WordPress core)
[英]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.