Mám takovej problém. Na stránkách bych chtěl udělat známkování jednotlivých příspěvků. To sem si udělal, žádnej problém. Mám dva soubory. V jednom seznam názvů všech příspěvků od uživatelů tahaný z databáze a v druhém souboru se mi jednotlivé příspěvky otevírají na základě id = '$id'. Chci ale udělat pomocí fce SetCookie(), aby uživatel mohl vždy oznámkovat jen jednou daný příspěvek a potom až třeba za 24 hodin. Taky žádný problém.
Problém mi nastal tehdy, když jsem zjistil, že pokud se oznámkuje jeden příspěvek z databáze - tak už ani ostatní nelze oznámkovat, protože to je vlastně jeden soubor, kde se střídají všechny příspěvky na základě výběru podle ID a jméno ve funkci SetCookie se potom aplikuje i na další příspěvky, takže je nelze oznámkovat.
Chápete, kdyby měl každý příspěvek svůj vlastní soubor, tak to je jednoduchý, protože parametr "jméno" ve fci SetCookie by byl pokaždý jiný. Ale jak to udělat tady ?
Když dám třeba příkaz, že po stisknutí tl. Odeslat se spouští setCookie na 24 hod., tak mi to takhle nefunguje.
<?
if(isset($odeslat)):
$prispevek = "prispevek_".$id;
SetCookie($prispevek , $odeslat , Time() + 86400);
endif;
?>
Další otázka je:
Může bejt ten první parametr ve funkci proměnné a nebo to musí bejt čistě text. řetězec v uvozovkách, ke kterýmu potom přistupujeme jako k proměnný ?
nevim jestli to uplne spravne chapu
udelal bych to tak, ze to obsahu te cookie serializuju obsah nejakeho pole, v kterem mam ulozeny ID tech prispevku
pak to staci pri novem nacteni te stranky vzit z cookie, odserializovat a spustit na to in_array()
<?
if(isset($odeslat)):
$prispevek = "prispevek_".$id;
SetCookie($prispevek , $odeslat , Time() + 86400); --proč je v tomhle řádku proměnná $odeslat a ne třeba jen text TRUE?
endif;
?>
nebo bych to udělal takhle
<?
if(isset($odeslat)):
SetCookie(prispevek[$id] , TRUE , Time() + 86400);
endif;
?>
sorry, upsal jsem se
správně je to takhle:
<?
if(isset($odeslat)):
SetCookie("prispevek[$id]" , TRUE , Time() + 86400);
endif;
?>
Moc díky všem, ale když potom budu k tý proměnný přistupovat, abych zamezil např. na danou dobou zobrazení známkovacího formuláře, tak to bude takhle ?
...
if(isset($prispevek[$id])) :
bla bla bla
endif;
Joo. Akorát doporučuji použít include (). Sice je víc souborů, ale větší přehlednost.
taky mam neco takoveho (http://sacred.wz.cz/index.php?main=cs&submian=screenshot) ale delat to pres coocike je knicemu. Doporucuji si udelat novou tabulku v sql se sloupcema : ip, id, time
kdyz clovicek bude hlasovat zapise se do tabulky i, id clanku a cas { time() } a potom kdyz pride dlasi clovek tak udelas jen DELETE FROM tabulka WHERE time < time() - 3600
takye clovek bude hlasovat kazdou hodinu pac 3600 je jedna hodina.
Je to vazne skvelej zpusob, to co delas tt jsem taky zkousel ale je to nic moc tohel je mnohem lepsi..