SESSION + COOKIE ellenőrzése
Sziasztok!
van egy olyan űrlap, amit csak egy kód beírása után tud a felhasználó kitölteni. Ezt session segítségével oldottam meg úgy, hogy ha helyes kódot ír be a felhasználó, akkor a $_SESSION['nospam'] = "clear"; és a következő oldalra csak akkor engedem, ha "clear" a session tartalma.
A gond ott kezdődött, hogy a session érvényessége 20 perc után lejár, így ha az űrlapot sokáig töltik, akkor visszadobja a kódbeíró részhez. Ezt megoldottam cookie-val így:a probléma az, hogy ugye a cookie törölhető ill. tíltható is a böngészőben.
Azt szeretném megcsinálni, hogy ha a böngészőben tíltva van a cookie, akkor feldobok egy alert() ablakot amiben közlöm a felhasználóval, hogy ha nem engedélyezi a sütiket, akkor max 20 perce van az űrlap kitöltésére.
Hogyan tudnám ezt megoldani? le lehet ezt kérni a böngészőből egyáltalán?
-----
gondoltam egy olyan megoldásra is, hogy elhelyezek az oldalon egy rejtett iframe-et, amelynek a tartalmát mondjuk 5 percenként frissítem. A tartalom egy php fájl, aminek mindössze egy session_start() a tartalma, így gyakorlatilag 5 percenként újrafrissítem a session-ök tartalmát és cookie-ra se lenne szükség. Kérdés, hogy ez mennyire szép megoldás...
előre is köszönöm a válaszokat!
■ van egy olyan űrlap, amit csak egy kód beírása után tud a felhasználó kitölteni. Ezt session segítségével oldottam meg úgy, hogy ha helyes kódot ír be a felhasználó, akkor a $_SESSION['nospam'] = "clear"; és a következő oldalra csak akkor engedem, ha "clear" a session tartalma.
A gond ott kezdődött, hogy a session érvényessége 20 perc után lejár, így ha az űrlapot sokáig töltik, akkor visszadobja a kódbeíró részhez. Ezt megoldottam cookie-val így:
session_start();
setcookie(session_name("nospam"), session_id(), time()+3600, "/", "", 0);
Azt szeretném megcsinálni, hogy ha a böngészőben tíltva van a cookie, akkor feldobok egy alert() ablakot amiben közlöm a felhasználóval, hogy ha nem engedélyezi a sütiket, akkor max 20 perce van az űrlap kitöltésére.
Hogyan tudnám ezt megoldani? le lehet ezt kérni a böngészőből egyáltalán?
-----
gondoltam egy olyan megoldásra is, hogy elhelyezek az oldalon egy rejtett iframe-et, amelynek a tartalmát mondjuk 5 percenként frissítem. A tartalom egy php fájl, aminek mindössze egy session_start() a tartalma, így gyakorlatilag 5 percenként újrafrissítem a session-ök tartalmát és cookie-ra se lenne szükség. Kérdés, hogy ez mennyire szép megoldás...
előre is köszönöm a válaszokat!
ajax ping
ping.php?1212140670798
ping.php?1212140672972
... és így tovább (téged csak az érdekel, hogy ne legyen ismétlődés)
header-el is lehet
A két módszer nem zárja ki egymást, de az itt ajánlotthoz kliens js sem kell.
puff
ez a pingelés... ha kapok ilyen urleket, az miért is jó nekem? nem teljesen tiszta ez a megközelítés...
akkor ezekszerint nem lehet lekérdezni böngészőből, hogy a cookie tíltva van-e? csak mert erre nem válaszoltatok :D akkor szerintetek az iframe-es megoldás se jó?
azt még elfelejtettem leírni, hogy az ini_set() függvény is tíltva van a szerveren, pedig azzal lenne a legegyszerűbb megoldani.
azért kell pingelés...
Csak azért, mert akkor 5 percenként lefuthat a szerveren egy kódod, ami frissíti a klienshez tartozó sessiont ill. kukit. Így az nem jár le akkor sem, ha a látogató túl sokat piszmog az űrlapod kitöltésével - ez volt a probléma, ugye?
ini set és társai
Véletlen számmal
A szerveren feljegyzed azt is, milyen űrlap érvényesítő kódot melyik véletlen számmal küldted ki.
Ezután a kitöltött űrlap feldolgozásakor már csak azt kell megnézned, hogy van-e benne véletlen számot tartalmazó rejtett mező és az űrlapban a mellé tárolt érvényesítő kódot küldték-e be.
Ehhez már nem kell session, vagy kuki sem, kliens oldali js sem, viszont valahogy tárolnod kell az elküldött adatokat valahogy a szerveren.
Böngésző bezárásig
Miért nem úgy állítod be, hogy böngésző bezárásig legyen érvényes? (Ill. a session fájlt/adatbázis bejegyzést/stb. törölheted sokkal később is, mondjuk ha az utolsó 24 órában nem használtad.)
iframe