1

次のことが可能かしら?私のウェブサイトには秘密のリンク(website.com/?secret=yes)があります。彼らが入力した後、URLを(website.com)に見せたかったのですが、秘密のリンクからのものであるため、特別なコンテンツを表示しました。

私はこのような何かがおそらくうまくいくと思いましたか?1.ユーザーが(website.com/?secret=yes)に移動して$ _SESSIONを作成し、それをtrueにします+Website.comに瞬時に移動します2.$ _SESSION = trueの場合、trueが特別なコンテンツを表示するかどうかを確認しますか?

私は次のコードを持っています:

<?php $secret = isset( $_GET[ 'secret' ] ) ? sanitize_text_field( $_GET[ 'secret' ] ) : false; ?>

<?php if( 'yes' === $secret ) : ?>
    <div>
        <p>My secret content</p>
    </div>
<?php endif; ?>

これ+$_SESSIONを利用することが可能であったか、または何かアイデアがありますか?$ _SESSIONがどのように機能するかはよくわかりませんが、php.netでそれについて読んだのですが、それは可能だと思いますか?

ありがとうございました!

ps私はワードプレスを使用しています。

4

2 に答える 2

2

index.phpページ内でこれを試すことができます。

<?php
session_start();
if(isset($_GET['secret']) && $_GET['secret'] === 'yes') {
    $_SESSION['secret'] = true;
    header('Location: www.website.com');
}
if(isset($_SESSION['secret']) && $_SESSION['secret'] === true) {
    //Yay!  Display secret content
}
?>
于 2012-11-16T21:06:39.823 に答える
2

リダイレクトなしで機能するようにコードを書き直しました。シークレットセクションは、ランディングページと同じページに存在することも、異なるページに存在することもできます。また、URLに「?secret = yes」が含まれていないランディングページに戻った場合にシークレットステータスを「忘れない」ように、ロジックを変更しました。また、リダイレクトせずにURLから「?secret=yes」を削除できる基本的なJavascriptでコードを更新しました。

このコードは、どのランディングページにも表示されます。

<?php
session_start();
if(isset($_GET['secret']) && 'yes' === $_GET[ 'secret' ])
{
    $_SESSION['secret'] = true;
}
?>

このコードは、ページのヘッドセクション、またはヘッドにアクセスできない場合は本文セクションに配置されます。

<?php
if(isset($_GET['secret']) && 'yes' === $_GET[ 'secret' ])
{
    echo '<script>history.pushState({},"","http://yourdomain.com/pageinurl/");</script>';
}
?>

このコードは、秘密のコードが含まれるすべてのページに表示されます。

<?php if(isset($_SESSION['secret']) && true === $_SESSION['secret']) { ?>
    <div>
        <p>My secret content</p>
    </div>
<?php } ?>
于 2012-11-16T21:07:48.010 に答える