簡體   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