2017-07-13 5 views
1

私は、ユーザーが電子メールと名前を渡すフォームがあるというWordpressのページを持っています。登録が完了すると、私の場合はMailChimpでデータを取得し、シミュレーションにアクセスする別のページにリダイレクトします。Wordpressのフォームでのみページアクセスを許可する方法

しかし、私はこのリダイレクトされたページへのアクセスを、私の記述されたフォームでのみ行いたいと思います。

URLにリダイレクトされたページのアドレスを直接入力できないようにしたいと思います。例:domain.com.br/simulado

もしそうなら、彼は再び家に入るだろう。とにかく、この制限はどのようにしてできますか?

+0

フォームの送信時に '$ _SESSION'変数を設定し、ページにアクセスする前にこの変数をチェックすることができます。 http://php.net/manual/en/book.session.php – WheatBeak

+0

セッションはデフォルトでワードプレスで有効になっていませんが、https://www.ironistic.com/using-php-sessions-in-wordpressに役立ちます。/ – WheatBeak

+0

ありがとうございます。 ContactForm7プラグインでこれを行うことはできますか?それとも他の人に教えてもらえますか? –

答えて

1

まずを、あなたのテーマの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'); 

を使用します認可のために。

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. 
} 

$_SESSION変数はいつでもお問い合わせフォーム7が送信し、これが設定されます覚えしてください:これを実行する最も簡単な方法はつまり、あなたのページに含まれていますpage-siumulado.phpをカスタムPHPファイルを設定することです他のフォームに使用している場合は、ページのロックも解除されます。いくつかの条件を設定する必要があるかもしれません。

1

形でこれを追加します。次に

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

をあなたのロックダウンのページに:あなたはWordPressのPHPのセッションを有効にする必要があり

<?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 
関連する問題