Autor | Zpráva | ||
---|---|---|---|
leorond Profil |
Ahoj, udělal jsem si souhlas o ukládání cookies ale nevím zda jsem to udělal správně a i přes to že to funguje bych chtěl znát váš názor zda je to OK.
<?php session_start(); ?> <style> .eu-cookies { position: fixed; left: 0; top: 0; padding:10px; width: 100%; color: #000; background-color: #FFF; z-index: 1000; } .eu-cookies button { background:#FFF; color:#444; margin:10px; padding:5px 5px; border:1px solid #444; -webkit-border-radius:3px; -moz-border-radius:3px; -ms-border-radius:3px; -o-border-radius:3px; border-radius:3px; } .eu-cookies button:hover { background:#444; color:#FFF; cursor:pointer; } .eu_cookies_no { display:none; } </style> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="content-type" content="text/html; charset=utf-8"></meta> </head> <body> <?php if(isset($_POST['ok_cookies_souhlas'])) { $_SESSION['ok_cookies'] = $_POST['ok_cookies']; } if(!empty($_SESSION['ok_cookies'])) { $cookies = "eu_cookies_no"; } else { $cookies = "eu-cookies"; } ?> <div class="<?php echo $cookies;?>"> <p>Tento web používá k poskytování služeb, personalizaci reklam a analýze návštěvnosti soubory cookie. Používáním tohoto webu s tím souhlasíte.</p> <form action="" method="post"> <input type="hidden" name="ok_cookies" value="true"> <input type="submit" name="ok_cookies_souhlas" value="Souhlasím"> </form> <a href="https://www.google.com/policies/technologies/cookies/">Další informace</a> </div> Moc děkuji za pomoc |
||
user Profil * |
#2 · Zasláno: 27. 7. 2016, 21:42:21
Ano, bude to takhle fungovat, ale nebylo by lepší vůbec zprávu nevypisovat, než display: none.
Za další lepší by bylo ukládat proměnou do cookies, kde si nastavíš platnost než do session, která vyprší za 20 minut nebo po zavření prohlížeče. Jinak já to mám celé řešené přes JavaScript. |
||
leorond Profil |
#3 · Zasláno: 29. 7. 2016, 17:36:35
Omlouvám se ale dostal jsem se na to až dnes.
user: Myslíš udělat to nějak takto? if(!$_COOKIE['souhlas']){ if($_GET['souhlas'] != 'ano') { echo "<div class=\"eu-cookies\"> <p>Tento web používá k poskytování služeb, personalizaci reklam a analýze návštěvnosti soubory cookie. Používáním tohoto webu s tím souhlasíte.</p> <a href=\"index.php?souhlas=ano\">Souhlasim se vstupem</a> <a href=\"https://www.google.com/policies/technologies/cookies/\">Další informace</a> </div>"; } else { setcookie("souhlas","ano",time()+31536000); header("Location: index.php"); } } |
||
juriad Profil |
leorond:
Ještě lépe, vždyť vůbec není třeba reloadovat stránku. Cookie můžeš nastavit přímo JS: <?php if (! isset($_COOKIE['souhlas'])) { ?> <script> function cookieSouhlas() { var potvora = document.getElementById('cookie-potvora'); potvora.parentNode.removeChild(potvora); var d = new Date(+new Date() + 365*24*3600*1000); // in milliseconds document.cookie = 'souhlas=ano;path=/;expires='+d.toGMTString()+';'; // Tady přebýval alert } </script> <div id="cookie-potvora"> <p>Tento web používá k poskytování služeb, personalizaci reklam a analýze návštěvnosti soubory cookie. Používáním tohoto webu s tím souhlasíte.</p> <button type="button" onclick="cookieSouhlas()">Souhlasím</button> <a href="https://www.google.com/policies/technologies/cookies/">Další informace</a> </div> <?php } ?> |
||
leorond Profil |
#5 · Zasláno: 29. 7. 2016, 18:09:58
juriad: Tvůj příklad mi nefunguje jak by měl, pokud kliknu na šipku zpět tak se dialog ukáže znovu a cookies to neuloží.
Musím script upravit nebo ti funguje tento script? |
||
juriad Profil |
#6 · Zasláno: 29. 7. 2016, 18:18:05
Když klikneš na tlačítko zpět, tak se stránka načítá z paměti prohlížeče, tedy bude ve stavu, ve kterém byla, když jsi ji naposledy navštívil.
Stejným problémem, si troufám tvrdit, musela trpět i ta implementace v PHP. |
||
leorond Profil |
#7 · Zasláno: 29. 7. 2016, 18:23:08
No popravdě mé druhé řešení s použitím
$_COOKIE mohu vracet šipkou a obnovovat stránku jak šílený a dialog se znovu nezobrazí ale u tvého řešení když obnovím stránku nebo kliknu na šipku zpět tak mi dialog vyskočí stejně jako by vůbec nebylo kliknuto na button.
|
||
juriad Profil |
#8 · Zasláno: 29. 7. 2016, 18:24:46
leorond:
Omlouvám se, zbyl na 9. řádce alert. Zkus teď. |
||
leorond Profil |
#9 · Zasláno: 29. 7. 2016, 18:27:18
Také se omlouvám ale JS moc nerozumím.
Nyní script funguje jak má a také mu nevadí šipka zpět. Děkuji |
||
leorond Profil |
#10 · Zasláno: 29. 7. 2016, 20:21:47
A ještě jedna otázečka juriad, počítá ten JS také s tím že ho uživatel bude mít vypnutý?
|
||
user Profil * |
#11 · Zasláno: 30. 7. 2016, 11:57:47
leorond:
Jak může javascript počítat s tím že je vypnutý když je vypnutý? |
||
juriad Profil |
#12 · Zasláno: 30. 7. 2016, 12:14:54
Nepočítá. Lze to však rozšířit tak, aby počítal. Otázkou je, zda je potřeba vůbec od uživatele nějaký souhlas, pokud má vypnutý JS. (Pak by stačilo přesunout ten div do scriptu a vypisovat jej pomocí document.write)
Mohl bys mít neprůstřelé řešení, ale to otravuje uživatele ještě víc, protože dochází ke znovu načtení stránky, čímž uživatel může přijít o nějaká data. Nejde to udělat tak jednoduše, jak ukazoval leorond). Formulář musí být odesílán pomocí POSTu a po zpracovní musí proběhnour přesměrovaní na původní stránku. Kvůli tomu musíš formulářem předávat aktuální adresu, což obecně (rozuměj použití mod-rewite) není triviální. Od IE9 by šlo udělovat souhlas asynchronně čistě v HTML a CSS bez použití JS. |
||
Časová prodleva: 8 let
|
0