Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/281.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/471.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP Cookies无法正常工作_Php_Javascript - Fatal编程技术网

PHP Cookies无法正常工作

PHP Cookies无法正常工作,php,javascript,Php,Javascript,所以我在我的网站上有一些CSS3的特效,但我试图给观众一个禁用这些特效的选项。因此,我将使用PHP Cookie方法,但它根本不起作用 如果没有任何cookie,我会看到“单击此处启用特殊效果”,即使它们已经启用。 直接进入禁用页面也不会关闭它们 这是我代码中的一些小技巧 检查是否设置了cookie: <?php if(!$_COOKIE['nofancy']){ ?> <link rel="stylesheet" type="text/css" href="http://p

所以我在我的网站上有一些CSS3的特效,但我试图给观众一个禁用这些特效的选项。因此,我将使用PHP Cookie方法,但它根本不起作用

如果没有任何cookie,我会看到“单击此处启用特殊效果”,即使它们已经启用。 直接进入禁用页面也不会关闭它们

这是我代码中的一些小技巧

检查是否设置了cookie:

<?php
if(!$_COOKIE['nofancy']){ 
?>
<link rel="stylesheet" type="text/css" href="http://pattersoncode.ca/incls/nofancy.css" media="screen" />
<?php
}
?>

关闭特殊效果:

<p>You have successfully turned off all special effects used in this website. This effect will last 48 hours after which you will need to disable them again. You will be redirected to the homepage in 5 seconds.</p>
<?php
$value = "nofancy";
setcookie("nofancy",$value, time()+3600*48);
?>
<script type='text/javascript'>
setTimeout(function () {
   window.location.href= 'http://www.pattersoncode.ca';

},5000); // 5 seconds
</script>
您已成功关闭此网站中使用的所有特效。此效果将持续48小时,之后您需要再次禁用它们。您将在5秒内重定向到主页

setTimeout(函数(){ window.location.href=http://www.pattersoncode.ca'; },5000); // 5秒
重新启用特殊效果:

<p>Special effects have been enabled again. This effect will be permanent unless disabled again. You will be redirected to the homepage in 5 seconds.</p>
<?php
setcookie ("nofancy", "", time() - 3600);
?>
<script type='text/javascript'>
setTimeout(function () {
   window.location.href= 'http://www.pattersoncode.ca'; 

},5000); // 5 seconds
</script>
特殊效果已再次启用。除非再次禁用,否则此效果将是永久性的。您将在5秒内重定向到主页

setTimeout(函数(){ window.location.href=http://www.pattersoncode.ca'; },5000); // 5秒
禁用/启用按钮:

<?php
if (!isset($_COOKIE["nofancy"]))
{
?>
 <a href="?a=fancyon"> Turn special effects back on </a> 
<?php
} else {
?>
 <a href="?a=nofancy"> Remove all effects </a> 
<?php
}
?>


有人能帮我吗?非常难懂..

我建议您设置CSS,以便所有启用奇特内容的选择器都从以下附加类开始:

/* regular CSS - just to demonstrate the normal selectors that have
   nothing to do with fancy CSS stuff */
#foo {
    border: 1px solid hotpink;
    width: 300px;
    height: 200px;
}

/* fancy stuff added here */
.fancy-css #foo {
    box-shadow: 5px 5px 10px lime;
    border-radius: 4px;
}
通过这种方式,您可以通过控制HTML输出来简单地启用/禁用样式。风格活跃?将类放在
主体
标记上。样式未激活?不要把它放在那里


这样,您可以通过相应地修改HTML输出来控制服务器上的样式。您还可以通过简单地将类删除/添加到
body
标记中,在不重新加载的情况下切换这些奇特的内容。

setcookie
在已经发送内容之后/http body是不可能的,除非您启用了输出缓冲(在这种情况下,发送内容后仍不可能发送,但尚未发送&仍保留在缓冲区中)。您想检查cookie的内容,而不是(仅)它的存在这也让你避免了拥有多个样式表的麻烦-只需将所有内容放在一个样式表中,并有条件地启用/禁用这些奇特的东西。同时也提高了性能,因为浏览器只需要请求、下载和解析一个CSS。(这里也考虑缓存)