[ nezki @ 24.08.2011. 07:56 ] @
Pozdrav svima
Evo ovako, potrebno mi je da na sajtu postavim sesiju da traje pet minuta. To nije problem to znam.
Ali mi je potrebno da posle 5 min kad sesija istekne da se strana refresuje.

E sad ja sam mislio da napravim sa java scriptom setTimeout -om da na svakih 5 minuta preko ajax funkcije proverim da li je sesija aktuelna da li ima vrednost i ako nema da se strana refresuje.

Da li je to ispravno ili ima neko bolje resenje?

Jos me interesuje, da li postoji mogucnost da ako korisnik nista ne radi na sajtu znaci ako je samo strana otvorena da posle tih 5 minuta se desi ovo? A ako pak korisnik radi nesto na sajtu da sesija se produzi, Nije mi bas jasno kako se to resava, video sam na dosta sajtova ovo da radi ok.

[ Predrag Supurovic @ 24.08.2011. 10:22 ] @
Ne vidim šta ima loše u tom rešenju koje si zamislio, a u stvari i ne znam kako bi moglo drugačije.
[ ColdKeyboard @ 24.08.2011. 12:42 ] @
Ako ti je potrebno samo da se stranica refreshuje svakih 5 minuta onda mozes da stavis HTML Meta refresh kod koji ce po isteku zadatakog vremenskog intervala
da osvjezi stranicu. Mislim da bi ovo cak trebalo da radi i ukoliko korisnik ima iskljucen JavaScript.

Evo primjer koda koji treba da ubacis u HEAD i koji radi refresh svakih 300 sekundi (5 minuta x 60 sekundi)
Code:
<meta http-equiv="refresh" content="300">


p.s. Ako korisnik radi nesto na stranici (klikne na link ili otvori novu) onda ce se stranica ponovo i ucitati i tajmer ce se vratiti na prvobitnih 300 sekundi.
[ b0ris @ 24.08.2011. 12:47 ] @
Problem sa takvim refresh sesije se javlja kad korinisk popunjava formu, ode do wc ili se javi na telefon (nema ga 6minuta), strana ce se refresatia on ce izgubiti sve podatke koje je uneo u formu.

Efikasnije resenje bi bilo da AJAX-om zoves refresh sesije (setInterval), u ovom slucaju sesija ce biti uvek aktivna.

p.s. Obrati paznju na header kad saljes request
[ nezki @ 24.08.2011. 12:47 ] @
Ne, potrebno je da po isteku sesije se stranica refresuje.
E sad ne znam kako to moze drugacije da se odradi sem da stavim da sesija traje 5 min, pa da na svakih 5 min proverim da li sesija jos uvek vazi ili ne
Pa sam mislio da postoji neko resenje za to preko php-a
[ ColdKeyboard @ 24.08.2011. 12:51 ] @
Sta ustvari pokusavas da napravis? Za sta ti treba da po isteku sesije uradi refresh?
[ nezki @ 24.08.2011. 12:54 ] @
Pa prilikom pretrage se neki rezultati cuvaju u sesiji. Pa se desi da korisnik ne radi nista na strani nekih 5 minuta pa mu istekne sesija i onda kad uradi klik na dugme na prikaz sledecih rezultata onda se sistem pogubi jer nema rezultata u sesiji.
[ nezki @ 24.08.2011. 12:56 ] @
Citat:
b0ris: Problem sa takvim refresh sesije se javlja kad korinisk popunjava formu, ode do wc ili se javi na telefon (nema ga 6minuta), strana ce se refresatia on ce izgubiti sve podatke koje je uneo u formu.

Efikasnije resenje bi bilo da AJAX-om zoves refresh sesije (setInterval), u ovom slucaju sesija ce biti uvek aktivna.

p.s. Obrati paznju na header kad saljes request


Kako mislis da refresujem sesiju ako je istekla
[ b0ris @ 24.08.2011. 14:14 ] @
postavis na 4minuta i 50sekundi setInterval, u tom trenutku jos nista nije isteklo, ili bas ako hoces da budes geek postavis na 4 minuta i 16 sekundi (deljiv je broj sa 8 :D)

Sve u svemu nije toliko bitno koje je vreme postavljeno, dok god je ispod 5 minuta.
Tacan proces je da ajaxom zoves istu domenu na kojoj se nalazis i to ce refreshati sesiju na strani servera, sto tebi i treba (da ne istekne).

Primer ilustrira korinika koji je odsutan od kompa vise od 5 minuta (koliko sesija traje).

Mozda malo offtopic ali zasto postavljas sesiju da istekne posle 5 minuta :? default je 24minuta (opet deljivo sa 8 :D)
[ nezki @ 24.08.2011. 14:23 ] @
ma lupio sam 5 min :)
[ agvozden @ 24.08.2011. 14:33 ] @
Najbolje je za to da koristiš ajax. Prilikom kreiranja stranice pitaj server koliko mu traje sesija (session_cache_expire), smanji za minut-dva i posalji background request.

Ukoliko se radi o poverljivim podacima, postavi mu pitanje kroz neku float formu, ako potvrdi onda refresh, u protivnom gasis sesiju...
[ VladaSu @ 24.08.2011. 15:55 ] @
Mislim da ti pristup resavanju problema pogresan.
Treba da resis zasto ti se pobrkaju rezultati.
Ako nesto cuvas u sesiji i sesija istekne a korisnik klikne na next tek onda treba da mu odradis tu stranicu za refresh.
Npr. Yahoo zna da javi da je sesija istekla.
Zamisli sada ja sedim i gledam rezultate i citam i citam i odjednom se refreshuje stranica i sve mi nestane. Poludeo bih.
Moze da ti se desi da ti se unisti sesija i pre 5 minuta pa ako klikne na next onda ces imati isti problem.
Moze da ima dva ista otvorena prozora....

Ali ako vec hoces na tvoj nacin...
Tebi ako korisnik aktivno radi na sajtu to vreme se uvek produzava za 5 minuta. Ne?
Tako da je dovoljno da stavis meta refresh na 5 minuta i stranica ce da odradi refresh i nece biti sesije.
Ne vidim sta ce ti biti onda problem?
[ dusans @ 24.08.2011. 17:28 ] @
A zasto ne hidden iframe sa meta refreshom?
[ VladaSu @ 25.08.2011. 10:58 ] @
Citat:
dusans: A zasto ne hidden iframe sa meta refreshom?

Kako, sta?
[ Predrag Supurovic @ 25.08.2011. 12:16 ] @
VladaSU ti je dao najbolji savet. Umesto da prikrivaš problem - reši ga. Aplikacija sama po sebi treba da ima rešenje za sitaciju kada je sesija istekla - da obavesti korisnika o tome i da ga uputi da sve podatke upiše od početka. Za to ti opšte ne treba ajax.