0

Web サイトに「Cookie 通知バー」を実装しています。画面の下部に固定されている灰色の透明なバーで、Cookie の使用の通知、詳細情報ページへのリンク、右端の [閉じる] ボタンがあります。このバーは、display:none を JavaScript のオンクリック イベントで使用して非表示にします。私の次の問題: クリックでバーを閉じるのと同じ関数内で Cookie を設定することは可能ですか? 動作していないように見えるため、私のコード:

// body タグの直前に:

<script language="javascript"> 
function closeCookieBar() {
document.getElementById('cookiepolicy').style.display = 'none';
SetCookie("cookiepolicy", 1, 8)
}

</script>

// 私が持っているページの下部に:

<div id="cookiepolicy" <?php if(isset($_cookie['cookiepolicy'])){ echo "style=\"display:none\""; } ?> >
<div id="cookiepolicy-wrapper">
<div id="cookiepolicy-txt">
<span id="cookiepolicy-notice">Deze website maakt gebruik van cookies. Waarom? Klik <a href="http://....nl/cookies.php" target="_blank">hier</a> voor meer informatie.</span>
<span id="cookiepolicy-accept-cookies" onclick="closeCookieBar();">Sluit</span>
</div>
</div>
</div>

次の問題: 約 415 のサブドメインがあり、この Cookie も保存したいのですが、メイン ドメインに設定した場合、サブドメインでも機能しますか?

前もって感謝します!

サンダー

4

2 に答える 2

0

jsでCookieを作成し、次のようにPHPで使用できます。

     function closeCookieBar() {
       document.getElementById('cookiepolicy').style.display = 'none';
          var date = new Date();
          date.setTime(date.getTime()+(days*24*60*60*1000));
          var expires = "; expires="+date.toGMTString();
          document.cookie = name+"="+value+expires+"; path=/; domain=.example.com";
     }

  <div id="cookiepolicy" <?php if(isset($_cookie['cookiepolicy'])){ echo "style=\"display:none\""; } ?> >  

名前の代わりにCookieの名前を入力し、ドメインにドメインを入力します。それが役に立てば幸い...

詳細については、JSでCookieを設定するにアクセスしてください。PHPの問題を読んでください。

于 2012-12-22T05:51:05.443 に答える
0

その一部をお手伝いできるかもしれません。PHP を使用しているため、この PHP スクリプトは、すべてのサブドメインとサブディレクトリで使用できる Cookie を設定できます。xxx.co.uk のようなドメインを使用している場合は、30 ~ 40 行目で調整が必要になる場合があります。

<?php // RAY_cookie_splash_page.php
error_reporting(E_ALL);


// SHOW A SPLASH PAGE ON FIRST ENTRY, THEN COOKIE THE BROWSER TO SKIP SPLASH PAGE
// TO SEE COOKIES IN FIREFOX, FOLLOW TOOLS => OPTIONS => PRIVACY => SHOW COOKIES
// MAN PAGE: http://php.net/manual/en/function.setcookie.php



// DEFINITIONS AS NEEDED HERE
define('COOKIE_LIFE', 60*60*24); // A 24-HOUR DAY IN SECONDS ( = 86,400 )



// CONSTRUCT AND SET THE COOKIE
// USE THIS TO MAKE COOKIE EXPIRE AT END OF BROWSER LIFE
$cookie_expires = 0;

// USE THIS TO MAKE A PERSISTENT COOKIE - DEFINE COOKIE_LIFE IN SECONDS - date('Z') IS UTC OFFSET IN SECONDS
$cookie_expires = time() + date('Z') + COOKIE_LIFE;

// CHOOSE THE COOKIE NAME AND VALUE
$cookie_name  = 'Fred';
$cookie_value = 'Wilma';

// MAKE THE COOKIE AVAILABLE TO ALL DIRECTORY PATHS IN THE WWW ROOT
$cookie_path    = '/';

// MAKE THE COOKIE AVAILABLE TO ALL SUBDOMAINS - DOMAIN NAME STARTS WITH DOT AND OMITS WWW (OR OTHER SUBDOMAINS).
$x = explode('.', strtolower($_SERVER["HTTP_HOST"]));
$y = count($x);
if ($y == 1) // MAYBE 'localhost'?
{
   $cookie_domain = $x[0];
} else // SOMETHING LIKE 'www2.atf70.whitehouse.gov'?
{
// USE THE LAST TWO POSITIONS TO MAKE THE HOST DOMAIN
   $cookie_domain = '.' . $x[$y-2] . '.' . $x[$y-1];
}

// MAKE THE COOKIE AVAILABLE TO HTTP, NOT JUST HTTPS
$cookie_secure = FALSE;

// HIDE COOKIE FROM JAVASCRIPT TO IMPROVE SECURITY (PHP 5.2+)
$cookie_http  = TRUE;

// SET THE COOKIE (BUT DO NOT BOTHER OUTPUTTING THE DEBUGGING MESSAGES)
if (setcookie($cookie_name, $cookie_value, $cookie_expires, $cookie_path, $cookie_domain, $cookie_secure, $cookie_http))
{
// echo "<br/>SUCCESS!  THE COOKIE HAS BEEN SET AND WILL BE AVAILABLE TO THE NEXT PAGE LOAD \n";
} else {
// echo "<br/>FAILURE!  THE COOKIE WAS NOT SET AS EXPECTED \n";
}



// IF THE COOKIE IS NOT AVAILABLE IN THIS SCRIPT, SHOW THE SPLASH PAGE
if (empty($_COOKIE["Fred"]))
{
   echo "<h1>SPLASH PAGE</h1>\n";
   echo "<p><a href=\"{$_SERVER["REQUEST_URI"]}\">CONTINUE TO SITE</a></p>\n";
   echo date('c');
   die("\nSPLASH COMPLETE");
}

// SPLASH PAGE HAS ALREADY BEEN SHOWN
echo "<h1>REGULAR START PAGE - AFTER SPLASH HAS BEEN SHOWN</h1>\n";
echo "<p><a href=\"{$_SERVER["REQUEST_URI"]}\">CONTINUE TO SITE</a></p>\n";
echo date('c');
die("\nREGULAR PAGE COMPLETE");
于 2012-12-21T14:23:18.803 に答える