Autor Zpráva
Prefin
Profil
Ahojda všichni.
Objevil se mi po půlo roce běhu webu jeden problémek, který se týká jednoznačné identifikace návštěvníka na webu a následné uložení poptávky pomocí session.
Při vstupu do formu se kontroluje existence
if(!$_SESSION["identifikacni_kod"]) { // Nastavení identifikace klienta
    $_SESSION["identifikacni_kod"] = md5(time().rand(1,1000));
}

Poté se tato $ použije jako základní identifikační hodnota při vložení poptávky. Když poptávka není úspěšná, tak se dá při jedné navštěvě webu opakovat a script rozezná její úpravu a provede místo vložení update.
Úmyslně nemám připravené řešení pro update poptávky z pozdější návštěvy webu - nejde to (tedy myslel jsem).

Při další návštěvě se vygeneruje nová session a tímto se vkládá nová poptávka.

Po půl roce se mi tu objevil případ, kdy návštěvním vložil jeden den poptávku a následujících několik dní ji vkládal podle logování procesů ještě několikrát ale se stejnou session - tedy v podstatě upravoval stávající, což by ale nemělo jít.

Script obsluhující vložení či update db mám tisíckrát testovaný,tam problém není.
Napadá správně, že se to vyřeší nastavením expirace?
define('PLATNOST', 60*60);
session_set_cookie_params(PLATNOST);
session_cache_expire(ceil(PLATNOST/60));
session_start();
...
if(!$_SESSION["identifikacni_kod"]) { // Nastavení identifikace klienta
    $_SESSION["identifikacni_kod"] = md5(time().rand(1,1000));
}
Díky
Prefin
Profil
Už jsem to vyřešil porovnáním existence řetězce md5 v db a přiřazením nového.

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:

0