Autor Zpráva
gardener
Profil
Zdravim, chtel bych s pomoci cookies vytvorit pocitadlo prihlaseni k aplikaci, tzn. pokud se zavre browser a spusti se znovu, tak se inkrementuje pocet prihlaseni o 1.

Zatim jsem to udelal takto:

<?php if(!isset($_COOKIE["pocet_prihlaseni"])) setcookie ("pocet_prihlaseni", 1);?>
echo ("Pocet prihlášení: ".$_COOKIE["pocet_prihlaseni"].'<br/ >');


Nastavovat parametr casu v setcookie neviim, jestli to ma smysl, pokud chci zavreni a znovuotevreni browseru brat jako nove prihlaseni.

Diky za jakoukoliv radu.
grimword
Profil
řeš to přes session => uživatel je nemůže vypnout jako cookie + po vypnuti browseru se smažou
nightfish
Profil
řeš to přes session => uživatel je nemůže vypnout jako cookie
až na to, že identifikátor session se obvykle ukládá do cookies... (resp. jeho předávání v URL není považováno za bezpečné)
srigi
Profil
gardener
Pouzi databazu alebo subor na serveri. Ukladat hodnotu do cookie je blbost. Nakolko mas spravene prihasovanie, tak bude vypocet presnejsi ako pri ukladani do cookie.
gardener
Profil
Tak jsem to předělal do SESSION ale prblém je v tom, že se mi nyní aktualizuje počet přihlášení při reloadu stránky.
Vím, že je to tou inkrementací ale jak to udělat aby se započetlo jenom při vytvoření né SESSION?
session_start();
session_register("pocet_navstev");
if(isset($_SESSION["pocet_prihlaseni"])) ++$_SESSION["pocet_prihlaseni"]; else
$_SESSION["pocet_prihlaseni"]=1;
AM
Profil *
Přes session to nebude v životě fungovat: jakmile zanikne session, zanikne i ta proměnná, takže sessions vůbec svým principem nejsou pro tohle použitelné.
1) když už jsi u těch sessions, funkce "session_register" se již nepoužívá, stačí ti session_start a pak přistupovat přímo k poli $_SESSION jako každé jiné proměnné.
2) Čeho chceš docílit? máš na webu systém uživatelských účtů, a pokud se uživatel přihlásí (obvykle tím, že zadá jméno a heslo), připočítá se přihlášení, nebo žádné účty nemáš a jde ti o to počítat, kolikrát se na stránku přistoupilo z daného PC (potom je ale tvůj termín "přihlášení" dost zavádějící)? nebo snad chceš udělat počítadlo podobné třeba těm, které dělá toplist.cz?
AM
Profil *
řeš to přes session => uživatel je nemůže vypnout jako cookie + po vypnuti browseru se smažou
v zásadě v ničem nemáš pravdu. Řešit to přes sessions nejde, když uživatel vypne cookies, znemožní de facto použití sessions (server může mít nastavené trans_sid, čili že se sessionid předává v URI, ale i to lze obejít), a session nezaniká, když se zavře browser (session skutečně zanikne, když jí vyprší timeout nebo pokud ji ručně ukončíš skriptem. Browser, který při zavření maže cookies, tím "zapomene přístup k session", ale na to se nedá spoléhat, zdaleka to neplatí všude).
grimword
Profil
AM
pokud má někdo vypnuté cookie (tím podle tebe zároveň znemožnil použití session) tak jak se potom řeší třeba přihlášení do nějakého profilu?
AM
Profil *
No znemožní to téměř, existuje náhrada zvaná trans_sid, která funguje tak, že pokud existuje session, PHP automaticky do všech odkazů, formulářů a dalších věcí, které odkazují na PHP soubory na stejném webu, dosadí parametr PHPSESSID (možná jsi na některých webech viděl, že jsi měl PHPSESSID=dlouházměťznaků v adrese, když jsi si je prohlížel). Použití trans_sid a ukázání session v adresním řádku se ale dnes nepovažuje za bezpečné a přestává se to používat, cookies podporuje 99% dnes používaných prohlížečů a kdo si je vypne, tak se prostě nikam nedostane, jistě jsi na spoustě webů viděl "pro přihlášení musíte mít povolené cookies" (a spousta dalších to už ani nepíše, protože to bere za samozřejmost, já pár webů s loginy spravuji, na uživatele bez cookies nehledím a dokonce si zatím vůbec nikdo nestěžoval).
Btw, neříkal jsem, že vypnutí cookies znemožní použití session, pouze jsem dementoval, že je uživatel nemůže vypnout: stačí jednoduchý plugin do prohlížeče nebo třeba i to dělat ručně než na odkaz kliknu z něj smazat PHPSESSID. Uznávám, to by asi hnedtak někdo nedělal. Ale problém v tomhle vláknu diskutovaný je přes session vážně neřešitelný, až se gardener vyjádří, jaký styl počítadla (viz můj post č.6) chce, snad mu poradím, co má použít.
gardener
Profil
Díky za rady, situace se má tak, že já osobně mám aplikaci, do které se naloguji a chci vidět kolikrát jsem se již takto přihlásil.
Pokud ale budu aplikaci používat, tzn. provádět reload při vyhledávání, editaci atp.
tak v tom případě samozřejmě počet přihlášení nenavyšovat.
Až zavřu browser, tak ukončit session abych se musel znovu přihlásit a pokud bych se znovu přihlásil, tak navýšit počet.
Jediné co mne napadáje ta věc, že po autentifikaci nabude promenna logickou hodnotu true a s tim s stim ze zvysi pocet a do promenne predam false, tzn. když bude false, tak se nebude inkrementovat a to až do zavření okna, kdy tato proměnná zanikne.

Určitě ale je i lepší řešení..
gardener
Profil
Díky za rady, situace se má tak, že já osobně mám aplikaci, do které se naloguji a chci vidět kolikrát jsem se již takto přihlásil.
Pokud ale budu aplikaci používat, tzn. provádět reload při vyhledávání, editaci atp.
tak v tom případě samozřejmě počet přihlášení nenavyšovat.
Až zavřu browser, tak ukončit session abych se musel znovu přihlásit a pokud bych se znovu přihlásil, tak navýšit počet.
Jediné co mne napadáje ta věc, že po autentifikaci nabude promenna logickou hodnotu true a s tim s stim ze zvysi pocet a do promenne predam false, tzn. když bude false, tak se nebude inkrementovat a to až do zavření okna, kdy tato proměnná zanikne.

Určitě ale je i lepší řešení..?
grimword
Profil
AM
díky za vysvětlení
AM
Profil *
1) "Až zavřu browser, tak ukončit session" - krásné, leč lehce obtížné. PHP prakticky nelze zjistit, jestli uživatel zavřel prohlížeč, proto mají všechny systémy přihlašování klasické tlačítko "odhlásit".
2) Přihlášení řešíš tak, že přes formulář pošleš jméno a heslo (nebo jen heslo, to je jedno), máš nějaký handlovací skript, který ověří správnost, a následně uložíš do session, že jsi přihlášen? Pak není nic lehčího, než do stejného skriptu, který ověřuje login údaje (což se dělá jen jednou, že) přidat třeba skriptík, který v souboru (nebo jestli máš uživatele v databázi, tak databáze, prostě někam do trvalého úložiště) přičte k původní hodnotě +1.

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: