Cronometru care sa nu se reseteze dupa refresh
Last Updated: Aug 27 2008 21:17, Started by
Cuculetzu
, Aug 27 2008 11:57
·
0
#1
Posted 27 August 2008 - 11:57
Am un script in php in care vreau sa poti face anumite lucruri intr-o perioada de timp. Sa zicem 20 de minute. Vreau sa pun un cronometru care sa nu se reseteze dupa ce dau refresh la pagina. Am incercat un ceas in javascript dar se reseteaza dupa refresh, ceea ce este logic.
Am facut o data la un script pentru chestionare online, unde iti arata cat timp mai ai sa poti termina chestionarul, apoi te trimitea la pagina cu rezultate. Acolo erau afisate toate intrebarile pe o singura pagina si nu se schimba/reimprospata. Dar aici se schimba paginile si nu mai tine treaba. Multumesc. |
#2
Posted 27 August 2008 - 12:03
Cuculetzu, on Aug 27 2008, 12:57, said: Am un script in php in care vreau sa poti face anumite lucruri intr-o perioada de timp. Sa zicem 20 de minute. Vreau sa pun un cronometru care sa nu se reseteze dupa ce dau refresh la pagina. Am incercat un ceas in javascript dar se reseteaza dupa refresh, ceea ce este logic. Am facut o data la un script pentru chestionare online, unde iti arata cat timp mai ai sa poti termina chestionarul, apoi te trimitea la pagina cu rezultate. Acolo erau afisate toate intrebarile pe o singura pagina si nu se schimba/reimprospata. Dar aici se schimba paginile si nu mai tine treaba. Multumesc. |
#3
Posted 27 August 2008 - 13:15
Altfel spus, salvezi intr-un tabel intr-o baza de date utilizatorul si timpul cand a inceput chestionarul. La fiecare accesare generezi dinamic codul javascript necesar pe baza acelui timestamp. La trimiterea formularului de catre utilizator spre procesare, verifici iar daca a depasit timpul. Toate aceste lucrururi sunt necesare datorita protocolului HTTP, care este stateless.
|
#4
Posted 27 August 2008 - 13:31
OriginalCopy, on Aug 27 2008, 14:15, said: Altfel spus, salvezi intr-un tabel intr-o baza de date utilizatorul si timpul cand a inceput chestionarul. La fiecare accesare generezi dinamic codul javascript necesar pe baza acelui timestamp. La trimiterea formularului de catre utilizator spre procesare, verifici iar daca a depasit timpul. Toate aceste lucrururi sunt necesare datorita protocolului HTTP, care este stateless. Pentru ce are nevoie Cuculetzu e suficient sa tina pe sesiune o varibila. Daca ala inchide browser-ul, la ce ma intereseaza pe mine sa stiu din baza de date ca a inceput testul la nu stiu ce ora in nu stiu ce zi ? |
#5
Posted 27 August 2008 - 13:41
The@ngel, on Aug 27 2008, 14:31, said: La ce o trebuii sa salvezi intr-o tabela ... nu stiu. (Cred ca e o manie intre tinerii programatori sa foloseasca bazele de date. Li se pare cool). Pentru ce are nevoie Cuculetzu e suficient sa tina pe sesiune o varibila. Daca ala inchide browser-ul, la ce ma intereseaza pe mine sa stiu din baza de date ca a inceput testul la nu stiu ce ora in nu stiu ce zi ? Am luat un script de pe net care contorizeaza minutele, secundele pana la o anumita data. Am initializat o sesiune care pastreaza data si ora care va fi peste 30 de minute. Apoi in scriptul Javascript am pus la data dorita acea sesiune. Acum mai caut o chestie, cand s-au terminat acele minute sa se schimbe pagina automat, adica sa trimita la o pagina cu rezultate. |
#6
Posted 27 August 2008 - 13:52
Cuculetzu, on Aug 27 2008, 14:41, said: Am luat un script de pe net care contorizeaza minutele, secundele pana la o anumita data. Am initializat o sesiune care pastreaza data si ora care va fi peste 30 de minute. Apoi in scriptul Javascript am pus la data dorita acea sesiune. Acum mai caut o chestie, cand s-au terminat acele minute sa se schimbe pagina automat, adica sa trimita la o pagina cu rezultate. window.location |
#7
Posted 27 August 2008 - 14:18
Ideea e ca nu functoneaza chiar corect... Cand se reseteaza sesiunea apar cele 29 de minute dar secundele nu incep de la 59. Secundele raman cele care sunt la ceasul de la calculator. Adica ceasul de pe site trebuie sa porneasca de la 29:59 . Minutele sunt ok, dar secundele sunt ca cele de la ceasul calculatorului, daca la ceas mai sunt 12 secunde pana la urmatorul minut, asa apare si pe site 29:12. <br>
|
#8
Posted 27 August 2008 - 14:22
Cuculetzu, on Aug 27 2008, 14:18, said: Ideea e ca nu functoneaza chiar corect... Cand se reseteaza sesiunea apar cele 29 de minute dar secundele nu incep de la 59. Secundele raman cele care sunt la ceasul de la calculator. Adica ceasul de pe site trebuie sa porneasca de la 29:59 . Minutele sunt ok, dar secundele sunt ca cele de la ceasul calculatorului, daca la ceas mai sunt 12 secunde pana la urmatorul minut, asa apare si pe site 29:12. <br> Javascript ruleaza pe client, deci e normal sa fie asa. |
#9
Posted 27 August 2008 - 14:24
OriginalCopy, on Aug 27 2008, 15:22, said: Ceasurile nu sunt sincronizate. Foloseste setInterval la o secunda si fa impartirile de rigoare. Javascript ruleaza pe client, deci e normal sa fie asa. Pai aveam in gand sa scad secundele actuale din 60 si sa le adun la data, dar scriptul nu accepta si secundele, poti pune anul, luna, ziua, ora si minutele. Ugh. Trebuie sa caut altul. Si asta afiseaza bine, fara delay. |
#10
Posted 27 August 2008 - 15:43
Still no solution.
Aceeasi chestie si cu alte scripturi, secundele. Ce pot sa mai fac? Edit: Am rezolvat si aceasta problema. Mai ramane cea cu actiunea pe care terbuie sa o faca dupa ce se termina ceasul. Edited by Cuculetzu, 27 August 2008 - 15:50. |
|
#11
Posted 27 August 2008 - 16:26
Multumesc mult, baieti!
Am rezolvat si ultima problema. Am reusit folosind windows.location pentru a ma duce la pagina cu rezultate unde le citesc folosind sesiunile initializate in prima pagina. |
#12
Posted 27 August 2008 - 18:54
Stiti cum pot verifica cat timp a stat un user pe site? Gasisem la un moment dat un script pe net, dar nu il mai gasesc acum cand am nevoie. Vreau sa aflu timpul in minute si secunde de cand a intrat pe pagina pana cand a iesit.
|
#13
Posted 27 August 2008 - 20:14
Cuculetzu, on Aug 27 2008, 19:54, said: Stiti cum pot verifica cat timp a stat un user pe site? Gasisem la un moment dat un script pe net, dar nu il mai gasesc acum cand am nevoie. Vreau sa aflu timpul in minute si secunde de cand a intrat pe pagina pana cand a iesit. Nu poti afla un timp corect decat daca operatia de iesire din site se efectueaza pe un buton sau link anume. Poti afla cu aproximatie contorizand timpul pornind de la variabila de sesiune care deja o ai sau o initializezi la intrarea in site si timpul scurs la fiecare operatie pe care vizitatorul o face in site-ul tau. |
#14
Posted 27 August 2008 - 20:29
goblenro, on Aug 27 2008, 21:14, said: Nu poti afla un timp corect decat daca operatia de iesire din site se efectueaza pe un buton sau link anume. Poti afla cu aproximatie contorizand timpul pornind de la variabila de sesiune care deja o ai sau o initializezi la intrarea in site si timpul scurs la fiecare operatie pe care vizitatorul o face in site-ul tau. As putea initializa o sesiune care sa pastreze timpul cand userul intra pe site. Nu ma intereseaza cate minute a stat la fiecare refresh. Dupa ce termina actiunile pe pagina se trimite catre o alta pagina unde sunt afisate rezultatele. Acolo pot accesa sesiunea cu timpul cand a intrat. Dar nu stiu cum sa fac aceasta diferenta de timp pentru a putea fi afisata in minute si secunde. Am mai gasit functia strtotime ("$timp"); dar nu stiu cat ma poate ajuta. Inca nu am o rezolvare. |
#15
Posted 27 August 2008 - 20:35
Intelege aceste trei cuvinte pentru inceput: HTTP este stateless.
|
|
#17
Posted 27 August 2008 - 21:03
Corect. Niciodata nu vei putea sincroniza perfect si acurat clientul cu serverul.
Modelul HTTP functioneaza asa: browserul se conecteaza la server si trimite o cerere HTTP, serverul o onoreaza sau nu, conexiunea se inchide. Salvezi undeva pe server timestamp-ul de start si la fiecare cerere generezi dinamic javascript care sa foloseasca acel numar. In javascript folosesti functia setata in setInterval pentru feedback vizual catre utilizator, insa nu exista decat impresia de "acest countdown se intampla live", caci in realitate verifici iar cand formularul este trimis daca mai este timp (caz in care generezi iar acel numar - diferenta dintre time() si acel timestamp de start salvat). Daca acel timp rezultat din diferenta este pozitiv nenul, atunci generezi iar formularul, si userul poate continua, altfel timpul a expirat. Edited by OriginalCopy, 27 August 2008 - 21:08. |
#18
Posted 27 August 2008 - 21:17
OriginalCopy, on Aug 27 2008, 22:03, said: Corect. Niciodata nu vei putea sincroniza perfect si acurat clientul cu serverul. Modelul HTTP functioneaza asa: browserul se conecteaza la server si trimite o cerere HTTP, serverul o onoreaza sau nu, conexiunea se inchide. Salvezi undeva pe server timestamp-ul de start si la fiecare cerere generezi dinamic javascript care sa foloseasca acel numar. In javascript folosesti functia setata in setInterval pentru feedback vizual catre utilizator, insa nu exista decat impresia de "acest countdown se intampla live", caci in realitate verifici iar cand formularul este trimis daca mai este timp (caz in care generezi iar acel numar - diferenta dintre time() si acel timestamp de start salvat). Daca acel timp rezultat din diferenta este pozitiv nenul, atunci generezi iar formularul, si userul poate continua, altfel timpul a expirat. Trebuie sa mai citesc o data postul tau ca sa inteleg exact ce spui. Am rezolvat problema, poate cu o marja de eroare de 1 secunda, dar pana acum merge ok. |
Anunturi
Bun venit pe Forumul Softpedia!
▶ 0 user(s) are reading this topic
0 members, 0 guests, 0 anonymous users