0

そのため、私の Web サイトでは 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>

特殊効果をオンに戻します。

<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>

無効化/有効化ボタン:

<?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
}
?>

誰でも私を助けることができますか?かなり困惑..

4

1 に答える 1

1

ファンシーなものを有効にするすべてのセレクターが次のような追加のクラスで始まるように、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 出力を制御することで、スタイルを簡単に有効/無効にすることができます。スタイルはアクティブですか?クラスをbodyタグに配置します。スタイルがアクティブではありませんか? そこに置かないでください。

このようにして、HTML 出力を適切に変更することで、サーバー上のスタイルを制御できます。bodyクラスを削除/タグに追加するだけで、リロードせずに派手なものを切り替えることもできます。

于 2013-07-08T21:59:49.370 に答える