如何制作一个cookie最后一年PHP

时间:2017-06-06 07:39:55

标签: php cookies

我尝试使用PHP创建一个基于cookie的主题切换器,并使用这个来创建cookie:

$t = $_GET["t"];
if($t == "dark" || "light" || "mixed") {
    setcookie("theme", $t, time() + 31556926, "/");
} elseif(!isset($t) and !isset($_COOKIE["theme"])) {
    setcookie("theme", "dark", time() + 31556926 , "/");
}
if(isset($_COOKIE["theme"])) {
    echo "<body style=\"background:url(/imgs/" . $_COOKIE['theme'] . ".gif) top left repeat\">";
} else {
    echo "<body style=\"background:url(/imgs/dark.gif) top left repeat\">";
}

但这似乎不起作用,它重新加载页面并设置cookie,但有一个奇怪的属性需要重新加载页面再次才能更改背景,并且只持续会议。除此之外,当你返回没有?t=light的index.php时,它会停留,但是当你重新加载时它会消失。我无法弄清楚它应该以这种方式行事。

4 个答案:

答案 0 :(得分:0)

我认为你有语法错误。只是试试..

$t = $_GET["t"];
if($t == "dark" || $t ==  "light" || $t == "mixed") {
     setcookie("theme", $t, time() + 31556926, "/");
 } elseif(!isset($t) && !isset($_COOKIE["theme"])) {
     setcookie("theme", "dark", time() + 31556926 , "/");
 }
if(isset($_COOKIE["theme"])) {
 echo "<body style=\"background:url(/imgs/" . $_COOKIE['theme'] . ".gif) top  left repeat\">";
} else {
echo "<body style=\"background:url(/imgs/dark.gif) top left repeat\">";
}

答案 1 :(得分:0)

使用strtotime()

让您的生活更轻松
setcookie('theme', 'dark', strtotime('+1 year'), '/');

顺便说一句,cookies应该高于其他所有 - 它是标题的一部分。你应该把它放在首位,否则 - 它可能会产生错误(如果你想隐藏错误,只需在@之前插入setcookie)。

答案 2 :(得分:0)

不确定是否有最大值,但是我发现有几个人认为它受到unixtime的限制,即2038年之后没什么。但是,正如其他人所指出的那样,没有必要让它超过10年因为浏览器/计算机将在10年内到期并重新加载或替换等。我的参考: https://www.quora.com/What-is-the-limit-to-a-persistent-cookies-expiry-date

与此同时,我发现了有关尺寸和数量限制的信息: http://browsercookielimits.squawky.net/

答案 3 :(得分:0)

问题在于,正如您在评论中所说,您在其他代码下面有setcookie。

在setcookie之前你不能有任何输出 尽可能远地移动问题中的代码。

见这里:http://php.net/manual/en/function.setcookie.php

  

如果在调用此函数之前存在输出,则setcookie()将失败并返回FALSE。

编辑;并尽可能地使用<HTML>标记

EDIT2;关于isset。

If(isset($_GET["t"])){
      $t = $_GET["t"];
}Else{
      $t = "dark";
}
if($t == "dark" || "light" || "mixed") {
    setcookie("theme", $t, time() + 31556926, "/");
} elseif(!isset($t) and !isset($_COOKIE["theme"])) {
    setcookie("theme", "dark", time() + 31556926 , "/");
 }
if(isset($_COOKIE["theme"])) {
    echo "<body style=\"background:url(/imgs/" . $_COOKIE['theme'] . ".gif) top left repeat\">";
} else {
     echo "<body style=\"background:url(/imgs/dark.gif) top left repeat\">";
}

很难在电话上把它弄好但是你明白了。