Pagina de start a forumului Forum PHP Romania - Discutii despre PHP, MySQL, Javascript, AJAX, etc Forum PHP Romania - Discutii despre PHP, MySQL, Javascript, AJAX, etc
Comunitatea PHP Romania
 

Online Users
Vezi mesajul original

 
       Pagina de start a forumului Forum PHP Romania - Discutii despre PHP, MySQL, Javascript, AJAX, etc -> Cod PHP
Subiectul anterior :: Subiectul următor  
Autor Mesaj
bluecrime



Data înscrierii: 21/Noi/2007
Mesaje: 61
Locație: Botosani

Trimis: Mie Apr 30, 2008 2:01 pm    Titlul subiectului: Online Users  

Am un script care arata cati utilizatori sunt online pe un site...

Am fisierul users.php

Cod: <?                                                                               

include "config.php";

$t_stamp = time();                                                                                           
$timeout = $t_stamp - $to_secs;

mysql_connect($server, $db_user, $db_pass) or die ("Useronline Database CONNECT Error");                                                                   
mysql_db_query($db, "INSERT INTO CJ_UsersOnline VALUES ('$t_stamp','$REMOTE_ADDR','$PHP_SELF')") or die("Database INSERT Error");
mysql_db_query($db, "DELETE FROM CJ_UsersOnline WHERE timestamp<$timeout") or die("Database DELETE Error");
$result = mysql_db_query($db, "SELECT DISTINCT ip FROM CJ_UsersOnline WHERE file='$PHP_SELF'") or die("Database SELECT Error");
$user = mysql_num_rows($result);                                                                 
mysql_close();                                                                                               

   echo "<b>$user</b>";
?>

Care culege si actualizeaza utilizatori online (fiecare intrare este valabila 2 minute)

si config.php

unde am datele de conectare la db si variabila aceasta:
$to_secs = 120;

si structura la tabel este asa:

Cod: CREATE TABLE CJ_UsersOnline (
  timestamp int(15) NOT NULL default '0',
  ip varchar(40) NOT NULL,
  FILE varchar(100) NOT NULL,
  PRIMARY KEY  (timestamp),
  KEY ip (ip),
  KEY FILE (FILE)
) TYPE=MyISAM

Problema este ca in baza de date se creaza cate o intrare pentru fiecare refresh, si ramana gol campul IP si FILE.
Ce are?
Sus  
Quber



Data înscrierii: 27/Iun/2006
Mesaje: 752
Locație: localhost

Trimis: Mie Apr 30, 2008 2:07 pm    Titlul subiectului:  

poti sa creezi o sessiune ca sa nu se introduca si sa faca update..!
Sus  
crivion



Data înscrierii: 10/Apr/2007
Mesaje: 529
Locație: Somewhere

Trimis: Mie Apr 30, 2008 2:08 pm    Titlul subiectului:  

$remoteaddr si $phpself le ai definite ca

$_SERVER['REMOTE_ADDR'] respectiv $_SERVER['PHP_SELF'] ?
Sus  
MihaiC



Data înscrierii: 14/Mai/2006
Mesaje: 998
Locație: Navodari

Trimis: Mie Apr 30, 2008 6:17 pm    Titlul subiectului:  

uite o functie pe care am facut-o eu mai demult.
Poti se te inspiri din ea si sa faci una pt. ce ai tu nevoie
P.S.: e cam mare si are multe chestii probabil inutile, te descurci tu :p
Cod: function useronline($user,$page) {
   $sid         = session_id();
   $time_limit = 300; // 5 minute
   $ip         = $_SERVER['REMOTE_ADDR'];
   $time        = date("U");
   $time_out    = $time + $time_limit;
   if(empty($user)) $user = 'Guest';
   if(empty($page)) $page = 'Unknown';
   $return = array();

   if((mysql_num_rows(mysql_query("SELECT * FROM `usersonline` WHERE user_name='".$user."'")) == 1) && ($user!='Guest'))
   {
   
   mysql_query("UPDATE usersonline SET page='$page', timeout='$time_out', sid='$sid', ip='$ip' WHERE user_name='$user'") or die("UPDATE 1<br />".mysql_error());
   
   }
     elseif(mysql_num_rows(mysql_query("SELECT * FROM `usersonline` WHERE sid='".$sid."'")) == 1)
      {
       
         mysql_query("UPDATE usersonline SET timeout='$time_out', user_name='$user', page='$page' WHERE sid='$sid' AND ip='$ip'") or die("UPDATE 2<br />".mysql_error());
           
        }else{
             
         mysql_query("INSERT INTO usersonline (user_name, sid, ip, timeout, page) VALUES ( '$user', '$sid','$ip', '$time_out', '$page')") or die("INSERT");
         
      }
             
   mysql_query("DELETE FROM usersonline WHERE timeout<'$time'");


   $return['total'] = mysql_num_rows(mysql_query("SELECT * FROM usersonline"));
   $return['guests'] = mysql_num_rows(mysql_query("SELECT * FROM usersonline where user_name='Guest'"));
   $return['members'] = mysql_num_rows(mysql_query("SELECT * FROM usersonline where user_name!='Guest'"));
   
return $return;
}
Sus  
bluecrime



Data înscrierii: 21/Noi/2007
Mesaje: 61
Locație: Botosani

Trimis: Mie Apr 30, 2008 10:25 pm    Titlul subiectului:  

sar'na mihai....
Mi-a fost de ajutor:)
Sus  
PHPRomania Bot
Bot Member


Data înscrierii: 27/Dec/2007
Mesaje: 1
Locaţie: Server Google
Trimis: Mie Dec 26, 2007 7:01 pm   Titlul subiectului: Ad  

Sus  
 
       Pagina de start a forumului Forum PHP Romania - Discutii despre PHP, MySQL, Javascript, AJAX, etc -> Cod PHP
Pagina 1 din 1


Powered by phpBB 2.0.22 © 2001, 2002 phpBB Group
Varianta în limba română: Romanian phpBB online community