1

我想知道以下是否可能?我的网站有一个秘密链接 (website.com/?secret=yes) 我想在他们输入后让网址看起来 (website.com) + 向他们展示特殊内容,因为它们来自秘密链接。

我想过这样的事情可能会奏效吗?1. 用户导航到 (website.com/?secret=yes) 创建一个 $_SESSION 并使其为真 + 即时导航到 website.com 2. 检查 $_SESSION = true if 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 我用wordpress。

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”的登录页面,它就不会“忘记”秘密状态。我还使用一些基本的 Javascript 更新了代码,这将允许您从 URL 中删除“?secret=yes”而无需重定向。

此代码将进入任何登录页面:

<?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 回答