Autorius Tema: Who online ?  (Skaityti 77 kartai)

marvel

  • HEROJUS
  • Žinutės: 821
  • Karma: +11/-2
  • Wade can fly

  • Aktyvumas per 30d.
    25.88%
Who online ?
« : 2011-01-28 16:43:44 »
hi dar karta

savo portfolio radau veikianti who online scripta jis skaiciuoja kiek butent tuo metu zmoniu yra, o as dar noreciau pasidaryt kad sumuotu kiek isviso apsilankyta

Kodas :
<?php
 
include_once ("usersOnline.class.php");
$visitors_online = new usersOnline();

if (
count($visitors_online->error) == 0) {

    if (
$visitors_online->count_users() == 1) {
        echo 
"There is " $visitors_online->count_users() . " visitor online";
    }
    else {
        echo 
"There are " $visitors_online->count_users() . " visitors online";
    }
}
else {
    echo 
"<b>Users online class errors:</b><br /><ul>\r\n";
    for (
$i 0$i count($visitors_online->error); $i ++ ) {
        echo 
"<li>" $visitors_online->error[$i] . "</li>\r\n";
    }
    echo 
"</ul>\r\n";

}
 
?>

Cia speju butu galima kazkurioj vietoj pakeist kazka ir uztektu :)

ganjabest

  • HEROJUS
  • Žinutės: 583
  • Karma: +25/-0
  • Povilas Stankevičius

  • Aktyvumas per 30d.
    100%
Re: Who online ?
« Atsakyti #1 : 2011-01-28 17:05:23 »
Na cia parodytas kodas tik atvaizduoja kiek yra dabar. Tai taip kad is butent sito nemanau kad ispesi ka  :D


<?php
 
include_once ("usersOnline.class.php");

$visitors_online = new usersOnline();

//Tikrina ar yra klaidu
if (count($visitors_online->error) == 0) {

    if (
$visitors_online->count_users() == 1) {
// Jeigu nera klaidu ir jeigu online tik vienas useris isveda i ekrana atsakyma
        
echo "There is " $visitors_online->count_users() . " visitor online";
    }
    else {
// Jeigu nera klaidu ir jeigu online daugiau nei vienas useris online isveda i ekrana atsakyma
        
echo "There are " $visitors_online->count_users() . " visitors online";
    }
}
else {
//Isveda klaidas
    
echo "<b>Users online class errors:</b><br /><ul>\r\n";
    for (
$i 0$i count($visitors_online->error); $i ++ ) {
        echo 
"<li>" $visitors_online->error[$i] . "</li>\r\n";
    }
    echo 
"</ul>\r\n";

}
 
?>



Nebent parodytum dar klasiu faila tai is ten kazka galima butu pasakyti
Visi žmonės kaip žmonės - tik aš vienas kaip dievas!

marvel

  • HEROJUS
  • Žinutės: 821
  • Karma: +11/-2
  • Wade can fly

  • Aktyvumas per 30d.
    25.88%
Re: Who online ?
« Atsakyti #2 : 2011-01-28 19:40:10 »
Tai kad daugiau nieko nera yra tik prisijungimas prie DB :)
O negaletum man toki scripta padaryt ar papeistint jei pats turi zinok tikrai pagelbetum per google toki veikianti vos ir tai radau

class usersOnline {

var $timeout = 600;
var $count = 0;
var $error;
var $i = 0;

function usersOnline () {
$this->timestamp = time();
$this->ip = $this->ipCheck();
$this->new_user();
$this->delete_user();
$this->count_users();
}

function ipCheck() {
/*
This function will try to find out if user is coming behind proxy server. Why is this important?
If you have high traffic web site, it might happen that you receive lot of traffic
from the same proxy server (like AOL). In that case, the script would count them all as 1 user.
This function tryes to get real IP address.
Note that getenv() function doesn't work when PHP is running as ISAPI module
*/
if (getenv('HTTP_CLIENT_IP')) {
$ip = getenv('HTTP_CLIENT_IP');
}
elseif (getenv('HTTP_X_FORWARDED_FOR')) {
$ip = getenv('HTTP_X_FORWARDED_FOR');
}
elseif (getenv('HTTP_X_FORWARDED')) {
$ip = getenv('HTTP_X_FORWARDED');
}
elseif (getenv('HTTP_FORWARDED_FOR')) {
$ip = getenv('HTTP_FORWARDED_FOR');
}
elseif (getenv('HTTP_FORWARDED')) {
$ip = getenv('HTTP_FORWARDED');
}
else {
$ip = $_SERVER['REMOTE_ADDR'];
}
return $ip;
}

function new_user() {
$insert = mysql_query ("INSERT INTO useronline(timestamp, ip) VALUES ('$this->timestamp', '$this->ip')");
if (!$insert) {
$this->error[$this->i] = "Unable to record new visitor\r\n";
$this->i ++;
}
}

function delete_user() {
$delete = mysql_query ("DELETE FROM useronline WHERE timestamp < ($this->timestamp - $this->timeout)");
if (!$delete) {
$this->error[$this->i] = "Unable to delete visitors";
$this->i ++;
}
}

function count_users() {
if (count($this->error) == 0) {
$count = mysql_num_rows ( mysql_query("SELECT DISTINCT ip FROM useronline"));
return $count;
}
}

}

?>
« Paskutinis taisymas: 2011-01-28 19:55:45 nuo marvel »

ganjabest

  • HEROJUS
  • Žinutės: 583
  • Karma: +25/-0
  • Povilas Stankevičius

  • Aktyvumas per 30d.
    100%
Re: Who online ?
« Atsakyti #3 : 2011-01-28 20:34:52 »
Ziurek
Sita funkcija iraso ip i DB.
<?php

 
function new_user() {
      
$insert mysql_query ("INSERT INTO useronline(timestamp, ip) VALUES ('$this->timestamp', '$this->ip')");
      if (!
$insert) {
         
$this->error[$this->i] = "Unable to record new visitor\r\n";         
         
$this->++;
      }
   }

?>


Tai tu susikurk dar viena lentele duomenu bazeje ir prirasyk dar viena uzklausa:

<?php

 
function new_user() {
      
$insert mysql_query ("INSERT INTO useronline(timestamp, ip) VALUES ('$this->timestamp', '$this->ip')");
       
mysql_query ("INSERT INTO userall(timestamp, ip) VALUES ('$this->timestamp', '$this->ip')");  //pvz tokia
      
if (!$insert) {
         
$this->error[$this->i] = "Unable to record new visitor\r\n";         
         
$this->++;
      }
   }

?>


Po to kazkur pasirasyt skripta kad suskaiciuotu tos naujos lenteles irasus .Cia ir rodys kiek skirtingu apsilanke.
O tada atvaizdavima daraisi kazkoki tai.. trauki is tos lenteles reiksmes ir rusiuoji pagal data .. Pvz pasidarai kad rodytu ta diena tiek, kita diena tiek ir t.t.

Na dabar pats ilindes i darbus todel nelabai laiko turiu parasyt as tau  :)
« Paskutinis taisymas: 2011-01-28 20:36:44 nuo ganjabest »
Visi žmonės kaip žmonės - tik aš vienas kaip dievas!

marvel

  • HEROJUS
  • Žinutės: 821
  • Karma: +11/-2
  • Wade can fly

  • Aktyvumas per 30d.
    25.88%
Re: Who online ?
« Atsakyti #4 : 2011-01-28 20:49:30 »
O kaip tas scriptas turi atrodyt kad viska suskaiciuotu ? Tas reiksmiu traukimas ?
Nu dekui ir uz tiek jau jei uzsiemes esi netrukdysiu :) Patrukdysiu kitus :)

Lukas Liesis

  • Administratorius
  • Super HEROJUS
  • Žinutės: 3780
  • Karma: +110/-8

  • Aktyvumas per 30d.
    100%
Re: Who online ?
« Atsakyti #5 : Šiandien 00:06:49 »
as tai sioje vietoje nenaudociau duombazes, o tiesiog paprasta faila, kuriame butu skaiciukas, kuris nurodytu kiek atvertimu padaryta. jei tau tinka tiesiog atvertimu skaicius. jei tau reikia ir ip, tai gal tada geriau su sql. +pagalvok apie tai, kad kas kiek laiko ta pati ip skaiciuosi kaip nauja atejima: kas valanda, dvi, o gal para? zodziu pagalvok kas tavo lankytojai ir kokie ju ip :)

su failais turetu praversti sios pamokos:

http://www.tizag.com/phpT/fileopen.php
http://www.tizag.com/phpT/fileclose.php
http://www.tizag.com/phpT/filewrite.php
http://www.tizag.com/phpT/fileread.php

Jūsų draugas, kolega ir puslapio administratorius,

Lukas.
Manualai.lt Facebooke
Jums patinka manualai.lt projektas?
serveriai.lt 40% nuolaida!