【问题标题】:Check if Cookie is set then load the page else redirect page检查是否设置了 Cookie,然后加载页面,否则重定向页面
【发布时间】:2014-11-13 02:15:07
【问题描述】:

我的网站确实有一个启动页面,在进入网站之前应该要求用户确认。 我在那里实现了一个“记住我”复选框,所以如果用户检查它是否会设置一个 cookie,那么在下一次访问页面中将自动重定向。

我刚刚遇到的问题是我想在我的标题页中设置一个条件,所以它应该检查用户是否已经有 Cookie,它应该显示页面内容,如果没有,它应该重定向到启动画面页面。

PHP 或者 JS 有什么办法吗

这是启动页面代码

   <!doctype html>
<html>
<head>
<meta charset="UTF-8">
<title>Untitled Document</title>
<!-- JQuery -->
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
<script>
$(document).ready(function(e) {
    $('#remember').click(function() {
        if (this.checked) {
            addCookie(30);
        } else {
            deleteAllCookies();
        }
    });
});

function deleteAllCookies() {
    var cookies = document.cookie.split(";");
    for (var i = 0; i < cookies.length; i++) {
        var cookie = cookies[i];
        var eqPos = cookie.indexOf("=");
        var name = eqPos > -1 ? cookie.substr(0, eqPos) : cookie;
        document.cookie = name + "=;expires=Thu, 01 Jan 1970 00:00:00 GMT";
    }
}

function addCookie(exdays) {
    var d = new Date();
    d.setTime(d.getTime() + (exdays*24*60*60*1000));
    var expires = "expires=" + d.toGMTString();
    document.cookie = expires;
}

function checkCookie() {
    if (document.cookie == false) {
    } else if (document.cookie.indexOf("expires") >= 0) {
        window.location.href = "https://www.google.com";
    }
}

function goTo() {
        window.location.href = "https://www.google.com";
}
</script>
</head>
<body onLoad="checkCookie();">
<h1>Splash Page</h1>
<form>
<input type="checkbox" id="remember"> Remember me
<br>
<input type="button" value="Enter" onClick="goTo();">
</form>
</body>
</html>

@totallytotallyamazing

【问题讨论】:

  • @totallytotallyamazing 你有什么想法吗?
  • 旁注:如果您只使用 JavaScript,我将禁用 JavaScript 并浏览您的网站。应该用 PHP 来做。

标签: javascript php jquery cookies


【解决方案1】:

对于这个解决方案,我使用了 JS、Jquery 和(PHP 仅用于测试)。

这里是DEMO。 (我稍微改动了之前的 Splash page Demo 以适应这个 Demo。)

代码如下:

<!doctype html>
<html>
<head>
<meta charset="UTF-8">
<title>Untitled Document</title>
<!-- JQuery -->
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
<script>
function checkCookie() {
    if (document.cookie == false) {
        $('#x').text("No Cookie.");
        window.location.href = "http://www.totallytotallyamazing.com/jsFiddle/cookie/indexNoAlert.html";
    } else if (document.cookie.indexOf("expires") >= 0) {
        $('#x').text("You have Cookie.");
    }
}
</script>
</head>
<body onLoad="checkCookie();">
<h1>My Website</h1>
<p><div id='x'></div></p>
<?php
session_start();
if(isset($_COOKIE['expires'])) {
  echo "Here is your expiration date " . $_COOKIE['expires'] . "!<br>";
}
?>
</body>
</html>

页面完成最终重定向后,再次重新加载页面以查看“过期”cookie 显示的过期日期。

我希望这对你有用,请告诉我。

【讨论】:

  • 对我不起作用,是否跨域设置了 cookie? cookie 应该有一个名称来识别吗?我应该将代码放在标题中(适用于所有页面)
  • @Amir 希望这可以证明它是有效的。 cookie 的名称是“expires”。此外,如果您在 Chrome 中,请从菜单中转到查看->开发人员->开发人员工具 - 在这里单击资源选项卡,您将看到 Cookies 单击以查看 cookie 或缺少。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-04-07
  • 1970-01-01
  • 1970-01-01
  • 2018-12-23
  • 1970-01-01
  • 1970-01-01
  • 2020-01-29
相关资源
最近更新 更多