0

我在 example.com 有一个 Wordpress 网站,在 example.com/landing-page 有一个登录页面。登陆页面有一个表格供用户填写以获得免费咨询。

有没有办法安装 cookie 或其他东西,以便当首次访问者访问 example.com 时,他们被重定向到 example.com/landing-page。但是在他们在登录页面上填写表格后,下次他们访问 example.com 时,他们会看到常规主页(不会被重定向)。

4

3 回答 3

4

您可以为此使用 javascript。确保包含 jQuery。

将以下内容添加到包含在两个页面上的全局 javascript 文件中,因为我们将在主页和登录页面上使用这些帮助函数来检查 cookie 是否存在并创建它。

<script>
function create_cookie(name, value, days) {
    var expires = "";
    if (days) {
        var date = new Date();
        date.setTime( date.getTime() + (days*24*60*60*1000) );
        expires = "; expires=" + date.toGMTString();
    }
    document.cookie = name + "=" + value + expires + "; path=/";
}

function get_cookie(name) {
    var nameEQ = name + "=";
    var ca = document.cookie.split(';');
    for (var i = 0; i < ca.length; i++) {
        var c = ca[i];
        while (c.charAt(0) === ' ') {
            c = c.substring(1, c.length);
        }
        if (c.indexOf(nameEQ) === 0) {
            return c.substring(nameEQ.length, c.length);
        }
    }
    return null;
}
</script>

在您的主页上包含以下脚本,该脚本主要检查 cookie 'form_submitted' 是否存在,如果不存在,则将用户重定向到登录页面。

<script>
// Redirect to landing page if 'form_submitted' cookie does not exist
if ( get_cookie( 'form_submitted' ) === 'undefined' ) {
    window.location.href = "http://xxx.com/landing-page";
}
</script>

在登陆页面上,您需要添加以下 javascript 绑定监听事件以提交表单,当它发生时它会创建 cookie,因此下次用户访问主页时,他们不会重定向。

<script>
jQuery(document).ready(function($) {

    // Listen for the form submit event
    $('#form-id').on('submit', function(){

        // Create cookie so that the user is no longer redirected
        create_cookie('form_submitted', 'true', 30);

    });

});
</script>

我希望这有帮助。祝你好运!=)

编辑:我刚刚阅读了在我写答案时留在原始帖子上的评论。只是想补充一点,我添加的 create_cookie 函数允许您在希望 cookie 过期之前传递天数(在我的示例中为 30),以便您可以将其设置得相当高以使其持续更长时间。

显然,javascript cookie 总是存在人们清除浏览器 cookie 的风险,但是没有其他方法可以在未登录的用户上跟踪类似的事情。就用户无法删除它而言,更安全的是 PHP 会话存储在服务器上,但这比这要困难得多,即使这也不是防弹的,因为用于将用户与会话相关联的用户数据可能会像他们的 IP、浏览器等一样发生变化,因此总是存在风险。

您可以在表单页面上看到一个链接,上面写着“我已经完成了这个表单,带我到主网站”,它再次设置了 cookie。

最后,您会注意到我的解决方案是轻量级的,并且不包含像 $.cookie 这样的不必要的插件,因为我在很大程度上使用了 javascript,只使用 jQuery 来准备文档并绑定提交事件。

于 2013-08-04T13:59:03.670 回答
1

如果您需要一个插件来设置用户访问您的主页(而不是任何其他页面)的 cookie,我之前遇到过同样的问题并创建了一个插件来处理该问题

在https://wordpress.org/plugins/redirect-to-welcome-or-landing-page上找到它

您需要做的就是设置您需要将用户重定向到的 url,然后它将处理 cookie 创建和重定向代码,以便搜索引擎知道这是一个临时重定向。

于 2016-02-01T09:37:05.770 回答
0

如果您没有很多时间,安装插件并对其进行配置以满足您的需求可能会更容易。试试http://wordpress.org/plugins/landing-pages/如果它不是你要找的,试着寻找更多的插件。

于 2013-08-04T14:41:39.927 回答