Diskuze: uživatel může hlasovat pouze jednou
V předchozím kvízu, Online test znalostí PHP, jsme si ověřili nabyté zkušenosti z kurzu.
Zobrazeno 11 zpráv z 11.
K personalizaci obsahu a reklam, poskytování funkcí sociálních médií a analýze naší návštěvnosti využíváme soubory cookie. Informace o tom, jak náš web používáte, sdílíme se svými partnery pro sociální média, inzerci a analýzy. Partneři tyto údaje mohou zkombinovat s dalšími informacemi, které jste jim poskytli nebo které získali v důsledku toho, že používáte jejich služby.
Používáme nezbytné cookies pro fungování webu a s tvým souhlasem také analytické a marketingové cookies.
Zajišťují základní funkce, bezpečnost a služby, které sis vyžádal. Nelze je vypnout.
| Služba | Poskytovatel | Účel | Cookies a úložiště | Doba uložení |
|---|---|---|---|---|
| ITnetwork | ITnetwork | Provoz webu, relace, přihlášení a uložení nastavení cookies. | PHPSESSID, auth_token, sid, itn_consent_impression, __Host-itn_consent | Relace až 1 rok |
| Google Tag Manager | Správa značek a načítání měřicích nástrojů webu. | Žádné | Neukládá se | |
| Google Fonts | Načítání typografie webu. | Úložiště řízené poskytovatelem | Dle podmínek poskytovatele | |
| Google Hosted Libraries | Načítání potřebných knihoven a stylů webu. | Úložiště řízené poskytovatelem | Dle podmínek poskytovatele | |
| Google reCAPTCHA | Ochrana formulářů a webu před zneužitím. | _GRECAPTCHA, rc::a, rc::b, rc::c, rc::f | Relace až 180 dní | |
| YouTube | Přehrávání vloženého video obsahu. | localStorage, IndexedDB; cookies after playback interaction | Relace až trvalé úložiště | |
| Vimeo | Vimeo | Přehrávání vloženého video obsahu. | __cf_bm, _cfuvid, vuid, localStorage, IndexedDB | Relace až 2 roky |
| Facebook Login | Meta | Přihlášení pomocí účtu třetí strany. | Úložiště řízené poskytovatelem | Relace až 1 rok |
| GoPay | GoPay | Zpracování uživatelem vyžádané platby. | Úložiště řízené poskytovatelem | Dle podmínek poskytovatele |
Pomáhají nám porozumět používání webu a zlepšovat ho.
| Služba | Poskytovatel | Účel | Cookies a úložiště | Doba uložení |
|---|---|---|---|---|
| Google Analytics 4 | Měření návštěvnosti a používání webu. | _ga, _ga_* | Až 2 roky | |
| Microsoft Clarity | Microsoft | Měření návštěvnosti a používání webu. | _clck, _clsk, _cltk | Relace až 1 rok |
Slouží k měření kampaní, personalizaci reklamy a marketingové komunikaci.
| Služba | Poskytovatel | Účel | Cookies a úložiště | Doba uložení |
|---|---|---|---|---|
| Google Ads | Měření kampaní, reklama a remarketing. | _gcl_au, _gcl_ls | Relace až 90 dní | |
| Meta Pixel | Meta | Měření kampaní, reklama a remarketing. | _fbp, _fbc, localStorage | Až 90 dní |
| Sklik | Seznam.cz | Měření kampaní, reklama a remarketing. | retargeting, sid, szn:* | Relace až trvalé úložiště |
| LinkedIn Insight | Měření kampaní, reklama a remarketing. | bcookie, li_gc, lidc, __cf_bm | Relace až 1 rok | |
| Ecomail | Ecomail.cz | Měření kampaní, reklama a remarketing. | ecmid, Úložiště řízené poskytovatelem | Dle podmínek poskytovatele |
| Atribuce kampaní ITnetwork | ITnetwork | Přiřazení návštěvy a objednávky ke kampani. | campaign_clid[*], user_session_context | Až 1 rok |
V předchozím kvízu, Online test znalostí PHP, jsme si ověřili nabyté zkušenosti z kurzu.
Osobne si myslím že problém bude v zlom návrhu DB ako v samotnom kóde. Skús sem hodiť tu časť kódu a najlepšie ako DB layout.
Pokud chceš takhle ošetřit anketu, tak musíš možnost hlasování
podmínit přihlášením uživatele, třeba přes FB, Google, atd. Nebo si
udělat vlastní registraci pro uživatele. Aby jsi získal unikátní
identifikátor onoho uživatele. Ten uložil do databáze a při každém
vkládání nového hlasu zkontrolovat, zad-li už uživatel s tímto
unikátním identifikátorem nehlasoval.
Samozřejmě to není neprůstřelné
a asi neexistuje žádná metoda, která by to zabezpečila na
100%.
Zabezpečení pomocí cookies je velmi slabé a někdy uživatel ani sám
nemusí chtít nějak podvádět, ale může mít například špatně
nastavený prohlížeč a při zavření prohlížeče se mu cookies smažou
sami a může hlasovat zvesela dále.
Ahoj, to by mě taky zajímalo, mohl by jsi prozradit jaké je nejlepší řešení tohohle problému, když ne přes cookies? (pokud bychom vyloučili přihlašování uživatele)
Tak minimálne je určite krajší spôsob na IP do toho cookie a určite by sa ešte niečo našlo.
A není pravda, že IP adresa nemusí nutně znamenat jeden počítač? O sítích skoro nic nevím, ale slyšel jsem že třeba celá škola může mít jednu IP...
Ip či cookie v tomto případě nevolit. Nejideálnější způsoby zmínil nekukej.
Neexistuje žádný způsob, jak jednoznačně identifikovat počítač (a
tím i uživatele), smiř se s tím.
Nástin pár věcí, co se lidé pokouší používat a proč to nefunguje:
Jediná reálná cesta, jak toho docílit je umožnit hlasování jen registrovaným uživatelům
Ahoj, mám udělané registrování uživatelů a mám omezení, že můžou volit jen ti, co jsou přihlášení, ale nevím jak uživateli omezit volení o jednoho příspěvku jenom jednou.
Místo toho, aby si v tabulce příspěvků měl sloupeček s hlasy, který
budeš snižovat nebo zvyšovat o 1 podle hlasu, tak založíš tabulku na
hlasy. Ta bude mít následující sloupečky
- ID, primary key, - ID hlasu, prostě proto
- ID přísppěvku - aby bylo poznat k jakému příspěvku ten hlas patří
- ID uživatele - kdo hlasoval
- hlas - jestli dal +1 nebo -1
při počítání likes/dislikes pro příspěvek uděláš
likes = SELECT COUNT(*) FROM hlasy WHERE pripevek_id == <ID
příspěvku> AND hlas = "+1"
dislikes = SELECT COUNT(*) FROM hlasy WHERE pripevek_id == <ID
příspěvku> AND hlas = "-1"
//pravděpodobně existuje způsob jak tohle zapsat do jednoho dotazu, ideální ještě přes JOIN to nějak přicpat k tabulce s příspěvkama, aby si s jedním dotazem vytáhnul všechny příspěvky včetně jejich hlasů
když uživatel bude hlasovat, tak nejdřív uděláš
SELECT COUNT(*) FROM hlasy WHERE prispevek_id == <přípěvek, u kterého
chce hlasovat> AND uzivatel_id == <ID hlasujícího uživatele>
Pokud ti to vrátí nulu, tak uživatel pro tenhle příspěvek ještě nehlasoval a můžeš jeho hlas uložit do db. Jinak už hlasoval a můžeš mu vynadat.
Zobrazeno 11 zpráv z 11.
