Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Witam, jak zmierzyć czas pobytu usera na stronie?
Forum PHP.pl > Forum > PHP
miedzna
Chodzi o to, że muszę zmierzyć czas pobytu usera na stronie w okresie jak się zaloguje i jak się wyloguje a później tę zmienną przypisać w bazie do tego właśnie usera.
Poza tym czy macie jakieś pomysły na to, żeby ograniczyć ilość logowań na stronę do dwóch razy?
Chcę to zrobić tak:
w tabelce z userami mam kolumnę ilosc_logowan z domyślną wartością 0, po zalogowaniu się pobieram tę wartość i jeżeli jest mniejsza od 2, to dopisuję do niej 1 i dodaję ją z powrotem do bazy i tak w kółko, aż wartość zmiennej ilosc_logowan wyniesie 2. Może macie pomysł, żeby tę procedurę jakoś skrócić?

Dzięki i pozdrawiam.
nospor
Ale po co te uprzejmości w tytule? Wal to w treści a nie w tytule winksmiley.jpg

Gdy sie koles loguje, to zapisujesz w bazie lub w sesji czas zalogowania. gdy wcisnie wyloguj, to pobierasz ten czas i porownujesz z czasem wylogowania i zapisujesz wynik do bazy. Oczywiscie bedzie problem gdy koles nie wcisnie wyloguj. Mozna by więc zapisywac jeszcze czas jego ostatniej aktywności, a poznije przy logowaniu sprawdzac czy sie wylogowal czy nie. jesli sie nie wylogowal, to zapisac czas jego ostatniej aktywnosci + 5 minut i uznac to za czas wylogowania.

Co do drugiego:
piszesz zapytanie, ktore warunkowo zmienia wartoswc kolumny (uzyj mysql'owego if). potem w php przy pomocy mysql_affected_rows sprawdzasz ile bylo przetworzonych rekordow. Jesli jeden, to zwiekszyles licznik. jesli 0, to gostek logowal sie juz dwa razy
miedzna
Zrobiłem tak, skrypt java script:
  1. <script LANGUAGE="JavaScript">
  2. startday = new Date();
  3. clockStart = startday.getTime();
  4. function initStopwatch()
  5. {
  6. var myTime = new Date();
  7. var timeNow = myTime.getTime();
  8. var timeDiff = timeNow - clockStart;
  9. this.diffSecs = timeDiff/1000;
  10. return(this.diffSecs);
  11. }
  12. function getSecs()
  13. {
  14. var mySecs = initStopwatch();
  15. var mySecs1 = ""+mySecs;
  16. mySecs1= mySecs1.substring(0,mySecs1.indexOf("."));
  17. document.odpowiedzi.czasPobytu.value=mySecs1
  18. window.setTimeout('getSecs()',1000);
  19. //if (mySecs1==60) {alert("jesteś tutaj już 60 sekund ...") }
  20. }



a niżej dałem to:
  1. <form name="odpowiedzi" method="post" action="...php">
  2. <input name="czasPobytu">
  3. <input type="submit" value="Wyślij odpowiedzi">
  4. </form>


I user widzi ile już czasu minęło i czy ma się pośpieszyć (konkurs na czas) a dodatkowo mam czas jaki minął od zalogowania się do momentu wylogowania się w sekundach smile.gif)

aha, jeszcze oczywiście w body:
<body onLoad="window.setTimeout('getSecs()',1)">
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.