2012-12-21 1 views
0

J'implémente une 'barre de notification de cookies' sur mon site. C'est une barre transparente grise qui est fixée au bas de l'écran avec la notification de l'utilisation des cookies, un lien vers une page avec plus d'infos et à l'extrême droite un bouton «fermer». La barre cache en utilisant un affichage: aucun avec un événement javascript on-click. Mon prochain problème: est-il possible de placer un cookie dans la même fonction qui ferme la barre sur clic? Car il ne semble pas fonctionner, mon code:Combinaison de cookies Javascript/PHP sur tous les sous-domaines

// Juste avant mon balise body j'ai:

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

</script> 

// Au bas de la page que j'ai:

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

Prochain numéro Je prévois: J'ai environ 415 sous-domaines Je veux que ce cookie soit aussi enregistré, s'il est placé sur le domaine principal, cela fonctionnera-t-il pour mes sous-domaines?

Merci d'avance!

Sander

Répondre

0

Je peux être en mesure d'aider avec une partie de cela. Puisque vous utilisez PHP, ce script PHP peut définir un cookie disponible pour tous les sous-domaines et sous-répertoires. Si vous utilisez un domaine comme xxx.co.uk, vous aurez peut-être besoin d'un ajustement autour des lignes 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"); 
+0

Ray, merci pour votre aide, cependant, mon biscuit devaient être mis avec Javascript comme je l'ai besoin après le clic sur l'événement, puis plus tard sur vérifié avec PHP. – user1555076

0

Vous pouvez créer votre cookie dans js et de l'utiliser en PHP comme celui-ci

 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\""; } ?> > 

Au lieu du nom de mettre le nom de votre cookie et dans le domaine de mettre votre domaine. Hope it helps ...

Pour plus d'u peut visiter Set cookie wih JS, read with PHP problem

Questions connexes