Newsgroup: it.comp.www.php
Titolo: useronline

sto cercando di far funzionare uno scriptino per sapere quantiuser ci
sono online
all'inizio del mio index.php metto:
<?php 
include "required.php";
include_once ("usersOnline.class.php");
$visitors_online = new usersOnline();
?>
nella pagina dove voglio che appaia la scritta metto:
<?php 
$link = mysql_pconnect($host, $user,$pwd) or die("Impossibile
connettersi al server SQL"); 
mysql_select_db ($db,$link) or die("impossibile selezionare il
database"); 
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";
}
?>
le prime due righe per connettersi al database poi la chiamata alla
classe
ma quando provo ad aprire la pagin aho questi due errori:
Warning: mysql_query(): Access denied for user: 'ODBC@localhost'
(Using password: NO) in c:\documents and settings\wilcox\my
documents\itisnew\usersOnline.class.php on line 83
Warning: mysql_query(): A link to the server could not be established
in c:\documents and settings\wilcox\my
documents\itisnew\usersOnline.class.php on line 83
dove la llinea 83 della classe e`:
$insert = mysql_query ("INSERT INTO useronline(timestamp, ip) VALUES
('$this->timestamp', '$this->ip')");
dove sbaglio?
includo la classe cosi` come e` sulla mia macchina di prova:
<?php
/*
usersOnline.php
Author: Ilir Fekaj
Contact: 
teb...@hotmail.com
Date: December 21, 2003
Latest version & info: 
http://www.free-midi.org/scripts/
Demo: 
http://www.free-midi.org
This very simple class enables you to track number of visitors online
in
an easy and accurate manner. It's free for all purposes, just please
don't
claim you wrote it. If you have any problems, please feel free to
contact me.
Also if you use it, please send me the page URL.
Example usage:
include_once ("usersOnline.class.php");
$visitors_online = new usersOnline();
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";
}
Important: You need to create database connection and select database
before creating object!
--------------------------------------------
Table structure:
CREATE TABLE `useronline` (
  `id` int(10) NOT NULL auto_increment,
  `ip` varchar(15) NOT NULL default '',
  `timestamp` varchar(15) NOT NULL default '',
  PRIMARY KEY (`id`),
  UNIQUE KEY `id`(`id`)
) TYPE=MyISAM COMMENT='' AUTO_INCREMENT=1 ;
*/
class usersOnline {
	var $timeout = 600;
	var $count = 0;
 
	function usersOnline () {
		$this->timestamp = time();
		$this->ip = $this->ipCheck();
		$this->new_user();
		$this->delete_user();
		$this->count_users();
	}
 
	function ipCheck() {
	/*
	This function checks 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')");
	}
 
	function delete_user() {
		$delete = mysql_query ("DELETE FROM useronline WHERE
timestamp < ($this->timestamp - $this->timeout)");
	}
 
	function count_users() {
		$count = mysql_num_rows ( mysql_query ("SELECT
DISTINCT ip FROM useronline"));
		return $count;
	}
}
?>
daniele

before creating object!
devo leggere piu` attentamente...
dovevo creare la connessione BEFORE creare l'oggetto...
e` che con le classi non ho molta dimestichezza...
daniele