2009-02-20 8 views
5

W moich badaniach, aby znaleźć sposób na sprawienie, by PHP podpowiadało mi, ile osób jest "online" na mojej stronie, odkryłem, że istnieją sposoby na "oszacowanie" to.skrypt informujący, kto i jak wielu użytkowników jest online

Zdecydowałem się zalogować wszystko, co dzieje się na stronie, również ze względu na błąd, ale teraz utknąłem w pisaniu mojego zapytania SQL.

Basicly Mam bazę danych z „IP”, „identyfikatora” i „datetime” i pomyślałem, że kwerenda tak by rade:

SELECT distinct(IP), datetime 
FROM `bigBrother` 
WHERE datetime BETWEEN DATE_SUB(NOW(), INTERVAL 3 MINUTE) AND NOW() 

Problemem jest to, że moja strona jest najczęściej oglądane i używane przez uczniów w szkolnej sieci, a także ... wszyscy mają to samo IP.

Pytanie brzmi, czy robię to dobrze, i czy mogę wybrać dwa różne wiersze z mojej bazy danych, tak, że mogę uporządkować zarejestrowanych użytkowników (którzy będą mieć "identyfikator użytkownika" - inni będą mieć userid = 0)?

Odpowiedz

3

Użyj plików cookie zamiast adresów IP.

PHP bardzo ułatwia mechanizm sesji. Na każdym z nich najpierw wykonaj session_start(), a następnie użyj wartości zwróconej przez session_id() jako identyfikatora użytkownika, który możesz umieścić w bazie danych.

+0

Czy mógłbyś wyjaśnić nieco więcej? – Jasper

2

Stworzyłem system dla witryny szkolnej, która również poprosiła o tę funkcję i oto, jak to zrobiłem.

miałem tabelę użytkowników, w tej tabeli było pole o nazwie „online_time”

Na każdej stronie funkcją nazwano jeśli użytkownik był zalogowany, że zaktualizowane „online_time” do obecnej chwili tego użytkownika. (unixtime)

Potem miałem funkcję "Kto jest online", która wyglądała na "czas online" i wyświetlała wszystkich użytkowników z czasem online z ostatnich 5 minut.

EDIT komentarza:

Można zrobić taką samą funkcję zapisać identyfikator sesji w innej tabeli, a czas został zapisany. Identyfikator sesji jest unikalny dla tego użytkownika, więc możesz uzyskać numer identyfikatora sesji aktywny w ciągu ostatnich 5 minut.

session_id() 
+0

Mam to już za dużo, administratorzy chcą także wiedzieć, ile osób jest w sieci - więc potrzebuję również niezalogowanych użytkowników – Jasper

Powiązane problemy