Autor Zpráva
Bouda
Profil
Dobrý den

Na stránkách mam pri registraci captcha obrázek který využívá cookies.

dá se říct, že hned na začátku scriptu před hlavičkou mam:
$rand = mt_rand (1000,9999); 
setcookie("CapCookie", $rand, time()+10); 

A problém je ten, že když cookie neexistuje, tak se v pořádku vytvoří a vše je v pořádku. (můžu stránku obnovovat jak chci)
Pokud cookie ještě nevypršela vše je opět v pořádku. (můžu stránku obnovovat jak chci)


Pokud cookie má prošlý čas (proto tam na test mam jen 10s) a stránka se načte znovu, tak poprvé mi to hodí error a cokie není nastavena a při druhém načtení stránky je to zase v pořádku.

Je to nějaká věc co jsem o cookies nepochopil, nebo bude problém v následujícím kódu.
Zatím jsem to vyřešil, tak že jsem dal životnost cookie na dlouhý čas, tak problém nenastává, ale já bych ho chtěl zkrátit jen na pár minut.


Díky
Tori
Profil
A čeho tím vlastně chcete dosáhnout? Pochopila jsem to správně, že chcete mít platnost sušenky pár minut, ale zároveň umožnit, aby platila i po vypršení zadaného času? Pokud ano, tak jí stačí nastavit čas expirace 0 (nebo zcela vynechat) a bude platit po celou session (=do zavření browseru) anebo s týmtéž výsledkem neukládat $rand do sušenky ale $_SESSION.
Na to prodlužování sušenky o původní (krátkou) platnost by šlo použít něco jako:
session_start();
$rand = mt_rand (1000,9999);
$platnost = 10;
setcookie("CapCookie", $rand, time()+$platnost);
if (!isset($_COOKIE['CapCookie']))  {
  setcookie("CapCookie", $rand, time()+$platnost);
  $_COOKIE['CapCookie'] = $rand;
}

- předpokládám, že vám jde spíš o čtení captcha kódu z pole $_COOKIE, než o existenci sušenky. Je to ale takové dost nešikovné řešení.
Bouda
Profil
Tak asi nechápu přímo úpravu délky platnosti vypršené cookie.
Ale váš poznatek mi pomohl vyřešit porblém, ktereý se snažim vyřešit už asi 5dní :)
stačilo přidat řádek

$_COOKIE['CapCookie'] = $rand;

a ani nemusím testovat, že neni nastavená. To se provede přikaždém reloadu capchty...

Díky

Vaše odpověď

Mohlo by se hodit

Odkud se sem odkazuje


Prosím používejte diakritiku a interpunkci.

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