Zdravím, peru se se zobrazováním hlášky "Používáním ... vyjadřujete souhlas s používáním cookies blabla", mám tu kód, který první zjistí, jestli existuje cookie s názvem souhlas.
Pokud cookie souhlas neexistuje, provede se test, jestli má prohlížeč cookies povolený (tím, že se vygenerují 2 session a porovná se jejich ID).
- Pokud jsou cookies povoleny, založí se nová cookie a $souhlas = 0, kdy se později na stránce ověří a zobrazí hlášku o tom, že je třeba dát souhlas s užitím cookies.
- Pokud cookies nejsou povoleny, tak se dá $souhlas = 1, aby web měl za to, že byl souhlas vydán
Problém nastává v situaci, kdy jsou cookies povoleny v prohlížeči a cookie souhlas ještě neexistuje. Při prvním načtení stránky si kod myslí, že cookie existuje a nastaví $souhlas = 1, aniž by cookie doopravdy existovala. Až při druhém refreshi se podmínka provede správně a kód si všimne, že cookie souhlas neexistuje a nastaví správně $souhlas = 0.
<?php
ob_start();
$souhlas = 0;
if(!isset($_COOKIE['souhlas'])) { //jestli není cookie k nalezení
//kontrola, jestli jsou cookies vůbec povoleny
session_start();
$a = session_id();
session_destroy();
session_start();
$b = session_id();
session_destroy();
if ($a == $b) {
//cookies povoleny, zapiš nové cookie a hoď hlášku o souhlas
$souhlas = 0;
setcookie('souhlas', 'ano', mktime(0,0,0,12,31,2030));
}
else {
//cookies nejsou povoleny v prohlížeči
$souhlas = 1;
}
}
else {
//cookie nalezena, souhlas je již vydán
$souhlas= 1;
}
ob_end_flush();
?>