ďťż

[HTML/PHP] niewidoczna liczba osób online

       

Podstrony


telcocafe

Czy istnieje taka możliwość abym mógł w danym momencie
oglądać aktualną liczbę osób online na stronie, jednak aby była
ona ukryta na stronie, czyli niewidoczna dla przeglądających ?

Przeglądałem sporo darmowych całkiem dobrych liczników, tylko że
muszę wtedy wstawić to na strone i jest to niestety widoczne :(



Mozesz to rozwiazac na kilka sposobow. Jesli masz stale ip to mozesz dac warunek, ze dla tego ip wyswietla online. Troche niewygodne ale jak tam chcesz. Inny sposob - podziel skrypt na 2 czesci: naliczajaca i wyswietlajaca. Czesc wyswietlajaca, ktora pobiera dane z pliku txt i zliczajaca, ktora dodaje dane to pliku txt. Jak mi przyjdzie cos do glowy to jeszcze napisze. Wlasnie wracam autobusem do domu xD

najprostszy sposób jest taki, że ze skryptu wywalasz wszystko co zaczyna się od "echo", oglądasz w jakim pliku jest zapisywana liczba userów, i jak trzeba to sobie otwierasz ten plik;)

Byłbym bardzo wdzięczny jeśli ktoś bardziej by mnie pokierował jak to mniej więcej krok po kroku zastosować, abym na przykład mógł otwierać plik (txt ??) i zobaczyć ile aktualnie osób jest na stronie :)

Początek strony mam taki:

<? echo'<?xml version="1.1" encoding="utf-8"?> <?xml-stylesheet type="text/css" href="images/style.css" ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> <html xmlns="http://www.w3.org/1999/xhtml">'; ?>
Użytkownik win edytował ten post 12 styczeń 2009, 20:59


Znalazłem już kilka liczników głównie to zliczanie odwiedzin, także przy odświeżaniu ....

Również znalazłem jeden z online, ale on wtedy jest widoczny na stronie, a szukam jakiegoś najprostszego
gdzie wejde tylko do pliku.txt albo poprzez źródło strony i zobacze ile jest aktualnie osób na stronie.

Można to rozwiązać bardzo prosto. Jeśli orientujesz się trochę w php, to podejrzewam iż nie będziesz miał z tym większych problemów.
Użyj bazy danych do zapisywania ilości użytkowników którzy są akutalnie online, do każdego rekordu musisz dodać czas i ip.
Zapytanie do utworzenia tej tabeli wyglądałoby tak:

CREATE TABLE uzytkownicy_online (id INT NOT NULL AUTO_INCREMENT, ip TEXT NOT NULL, czas TEXT NOT NULL, UNIQUE (id));

Jeśli to już masz w bazie, do strony głównej dodaj kod który sprawdza czy dany użytkownik już widnieje w bazie i aktualizuje czas, do tego trzeba jeszcze dodać usuwanie przestarzałych wyników dla innych osób.
Czyli (na szybko Ci to spróbuje napisać):

<?php //Nie zapomnij o polaczeniu z baza! Jesli masz plik konfiguracyjny przystosowany do polaczen (zalozmy config.php), uzyj funkcji include ('config.php'); //Dodawanie i edytowanie dla akutalnego uzytkownika $ip = $_SERVER['REMOTE_ADDR']; $czas_teraz = time(); $query = mysql_query ("SELECT * FROM uzytkownicy_online WHERE ip='$ip';"); $row = mysql_fetch_array ($query); $id = $row['id']; if (empty ($row['ip'])){ mysql_query ("INSERT INTO uzytkownicy_online (ip, czas) VALUES ('$ip', '$czas_teraz');");}else { mysql_query ("UPDATE uzytkownicy_online SET czas='$czas_teraz' WHERE id='$id';");} //Usuwanie przestazalych wpisow $query = mysql_query ("SELECT * FROM uzytkownicy_online"); while ($row = mysql_fetch_array ($query)){ $ip2 = $row['ip']; $czas = $row['czas']; $id = $row['id']; if ($ip2 !== $ip){ // Jeśli użytkownik będzie nieaktywny przez pięć minut (300 sekund) to rekord zostanie usunięty. if (($czas-$czas_teraz)>300){ mysql_query ("DELETE * FROM uzytkownicy_online WHERE id='$id';");} } } ?>

A teraz kodzik w pliku ktory tylko Ty bedziesz odpalal ( zalozmy ilosc_uzytkownikow.php ):

<?php //Nie zapomnij o polaczeniu z baza! Jesli masz plik konfiguracyjny przystosowany do polaczen (zalozmy config.php), uzyj funkcji include ('config.php'); $i = 0; //Usuwanie przestazalych wpisow $query = mysql_query ("SELECT * FROM uzytkownicy_online"); while ($row = mysql_fetch_array ($query)){ $i = $i++; $czas = $row['czas']; $id = $row['id']; if (($czas_teraz-$czas)>180){ mysql_query ("DELETE * FROM uzytkownicy_online WHERE id='$id';");} } echo "Ilosc osob akutalnie online: <b>$i</b>"; ?>

Naprawde pisane na szybko, bo sie spiesze- wiec jesli beda bledy to z gory przepraszam. Nie mam czasu przetestowac.
Pozdr ;)
Użytkownik Pancha123 edytował ten post 18 styczeń 2009, 22:01
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • nvm.keep.pl

  • Sitedesign by AltusUmbrae.