Autor Zpráva
leorond
Profil
Ahoj, mám takoví dotaz ohledně cookies na webu a to konkrétně potvrzení souhlasu.
Má vize je taková

1. Zjistit IP
2. Po potvrzení zapsat do DB IP adresu a 1 ( souhlas )
3. Po příchodu z IP která je již zapsána v DB nezobrazovat znovu formulář

Chtěl bych se zeptat zda je to dobré řešení, ukládat všechny IP do DB a zda by se nenabízelo lepší řešení.
lionel messi
Profil
leorond:
Chtěl bych se zeptat zda je to dobré řešení, ukládat všechny IP do DB a zda by se nenabízelo lepší řešení.

Nie je to vhodné riešenie.

Použi podmienku: Ak cookie s názvom souhlas neexistuje, zobrazíš upozornenie. Po kliknutí na súhlas vytvoríš sušienku s názvom souhlas a platnosťou do zatvorenia prehliadača (čiže platnosť nastavíš na 0). Ak cookie existuje, upozornenie nezobrazíš.
leorond
Profil
Takže něco takového?

Na začátek index.php
<?php
if(!$_COOKIE['neco']){
header("Location: varovani.php");
}

souhlas.php
<?php
if($_GET['souhlas'] != 'ano'){
echo "<a href=\"souhlas.php?souhlas=ano\">Souhlasim se vstupem</a>";
}
else{
setcookie("TestCookie", $value, time()+31536000);  /* expiruje za rok */
header("Location: index.php");
}
 
}
?>
Tomáš123
Profil
leorond:
Ten skript nemôže fungovať:
- o súbore souhlas.php nie je nikde zmienka;
- premenná $value je nedefinovaná;
- predvolene je expirácia do zatvorenia okna prehliadača, nemusíš tam vymýšľať kľučky;
- súhlas sa nerieši presmerovaním, väčšinou existuje panel, ktorý upozorňuje, že používaním webu súhlasíš s používaním Cookies; ak tvoj web nie je na Cookies existenčne závislý, možno má význam presmerovávať, ale ďalej to riešiť inak.
- neviem odhadnúť ako sa vyhodnotí podmienka v druhom skripte, keď vôbec neexistuje kľúč, ktorý sa vyhodnocuje

Za predpokladu, že by moja stránka nevyžadovala Cookies, dal by som užívateľovi na výber s tým, že kým by explicitne nezamietol, Cookies by som využíval. Ale záleží od obsahu.
Alphard
Profil
Technické řešení bych navrhoval spíš takto: phpfashion.com/jak-na-souhlas-s-cookie-v-eu. Cookie se nastavuje pomocí javascriptu a celé je to na pár řádků.
leorond
Profil
Alphard přesně z tohoto článku nyní vycházím.

Tomáš123 vím že nebude fungovat, taky jsem tam nikde nepsal že je to řešení které použiju.


Alphard to je snad zakleté xD absolutně mi to nefunguje :D

<div class="eu-cookies" n:if="empty($_COOKIE[eu-cookies])">
    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.
    <button>V pořádku</button>
    <a href="https://www.google.com/policies/technologies/cookies/">Další informace</a>
</div>
<noscript><style>.eu-cookies { display:none }</style></noscript>

.eu-cookies {
    position: fixed;
    left: 0;
    top: 0;
    width: 100%;
    color: white;
    background-color: black;
    z-index: 1000;
}

.eu-cookies button {
    background: green;
    color: white;
}

$('.eu-cookies button').click(function() {
    var date = new Date();
    date.setFullYear(date.getFullYear() + 10);
    document.cookie = 'eu-cookies=1; path=/; expires=' + date.toGMTString();
    $('.eu-cookies').hide();
});

Sice se mi zobrazí vše tak jak má ale po kliknutí na button se nic nestane a já bych chtěl aby to zmizelo.


Je možné že cookies vůbec nepoužívám? :D Může mi to vůbec někdo dokázat?
Fisir
Profil
Reaguji na leoronda:
Protože ten HTML kód s lištou není obyčejný HTML kód, ale Latte šablona. Atribut n:if přepiš do odpovídající PHP podmínky.
lionel messi
Profil
leorond:
Může mi to vůbec někdo dokázat?

Áno.
Alphard
Profil
Také by to šlo úplně bez PHP, viz Živá ukázka.
leorond
Profil
:D To já vím že může :D měl to být pokus o vtip :D

Takže tam potřebuji podmínku zda je něco v cookies, asi takto?

if(empty($_COOKIE[eu-cookies]))

a předpokládám že až zato vložit

<div class="eu-cookies">
    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.
    <button>V pořádku</button>
    <a href="https://www.google.com/policies/technologies/cookies/">Další informace</a>
</div>

jelikož chci aby se to ukázalo pokud je cookies prázdné

Píšu to dobře?


Alphard kdyby tu slo dávat LIKE tak máš palec hore :)
Děkuji
leorond
Profil
Alphard vím že to bude znít hloupě ale tvůj příspěvek [#9] je dobré řešení :D jen jsem kliknul v živé ukázce zda to funguje a už se mi to nezobrazí vůbec nikde :D

Jak to mohu zvrátit? :D
Alphard
Profil
Smazat cookie, někde ve vývojářských nástrojích prohlížeče. Testovat to lze dobře v anonymním režimu.
Nicméně, cookie by měla být nastavená jen pro danou doménu, takže je možné, že to prostě nefunguje. Defaultně je lišta skrytá a bez funkčního javascriptu se nic nezobrazí. Z možných příčin mě napadá nepřítomnost jQuery, nebo stará verze IE, Array.indexOf() je podporováno až od verze 9.
leorond
Profil
Jen se tak blbě zeptám, co když vložím do hlavičky nějak úhledně aby to netlouklo do očí nepotvrzovací hlášku "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."?

To by mělo stačit ne? Pokud s tím někdo nesouhlasí tak ať se dekuje ze stránek :D. Z právního hlediska by to mělo být v pořádku nebo se pletu?

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: