Autor Zpráva
fimmos
Profil
k tomu vícero hlasování, co jsem tu psal... rozhodl jsem se, že to udělám pomocí cookies a ip. jenže když mám hlasování článku na 10 stranách jiných, tak potřebuju do cookie uložit jejich název nebo id stránek. Jelikož ukládání tolika cookie (kdybych měl více stránkek s hlasování třeba) není moc dobry, tak bych potřřeboval do cookie nějak více hodnot uložit, třeba pomocí pole, jneže nevím jak na to.
poraďte prosím, díky
printf
Profil
nedal by se do cookie uložit třeba řetězec místo pole, hodnoty oddělený např středníkama?
WertriK
Profil *
Z webguru:
Jak jsem již psal v minulém dílu existují určitá omezení cookies - na jednu doménu je to maximálně 20 cookies. Pokud tedy chcete uživateli více cookies nemusel by vám tento počet stačit. Proto je zde možnost jak nastavit cookies více hodnotami: např. tento ukázkový příklad nastaví do jedné cookie 4 hodnoty - jméno, příjmení, pohlaví a počet návštěv.


<?php
setcookie ("uzivatel[jmeno]", "Josef");
setcookie ("uzivatel[prijmeni]", "Novák");
setcookie ("uzivatel[pohlavi]", "muž");
$uzivatel[no_navstev]++;
setcookie ("uzivatel[no_navstev]",$uzivatel[no_navstev]);

echo "Toto je ".$uzivatel[no_navstev].". návštěva uživatele ".$uzivatel[prijmeni].", ".$uzivatel[jmeno].", pohlaví ".$uzivatel[pohlavi];
?>


více na webguru
llook
Profil
Další možností je serialize a poté unserialize.
23k_fitko
Profil *
hmmm ted me napadlo ... co kdyz nejaky server publikuje dejme tomu 5 clanku denne a kazdy budu chtit hodnotit.

A cookies jsou omezeny na 20.

Jak to tedy bude, co se ma ukladat?
llook
Profil
Můžeš použít serializované pole, jak jsem už naznačil. S tím by byl problém až v momentě, kdy by mělo tolik položek, že by se do cookie nevešlo, ale to asi hned tak nehrozí. Zjednodušeně zhruba takto:

$hlasovani = isset($_COOKIE['hlasovani']) ? unserialize($_COOKIE['hlasovani']) : array();
if (isset($_GET['clanek'], $_GET['hlas'])) {
$hlasovani[$_GET['clanek']] = $_GET['hlas'];
}
setcookie('hlasovani', serialize($hlasovani));
Toto téma je uzamčeno. Odpověď nelze zaslat.

0