Return to Snippet

Revision: 21093
at December 3, 2009 05:13 by ginoplusio


Initial Code
function getIP() {
	$ip="";
	if (getenv("HTTP_CLIENT_IP")) $ip = getenv("HTTP_CLIENT_IP");
		else if(getenv("HTTP_X_FORWARDED_FOR")) $ip = getenv("HTTP_X_FORWARDED_FOR");
		else if(getenv("REMOTE_ADDR")) $ip = getenv("REMOTE_ADDR");
		else $ip = "";
	return $ip;
}

function howManyIps() {
	$filename = "./howmanyip.log";
	$seconds = 300;
	$yourIP = getIP();

	if (file_exists($filename.".lock")) $readonly = true; else $readonly=false;

	$count = 0;
	//lock the file
	if (!$readonly) $fpLock = fopen($filename".lock", "w");

	//read data ips
	$fp = fopen($filename, "r");
	$arIPS=explode ("\n", fread($fp,filesize($filename)) );
	fclose($fp);

	//if file is locked get out
	if ($readonly) return count($arIPS);

	$s = "";
	$already=false;
	//update data and search user ip
	for ($i=0;$i<count($arIPS);$i++) {

		$arData= explode (" ", $arIPS[$i]);

		//update your user timer
		if ($yourIP==$arData[0]) {
			$already=true;
			$arData[1]=time();
		}

		// check if user is old
		if ( time()- (integer)$arData[1] < $seconds ){
			$s.=$arData[0]." ".$arData[1]."\n";
			$count++;
		}

	}

	if (!$already) {
		//your user is new, add it to the list
		$s.=$yourIP." ".time()."\n";
		$count++;
	}

	//save the list
	$fp = fopen($filename, "w");
	fwrite($fp,$s);
	fclose($fp);

	//remove thr lock
	fclose($fpLock);
	unlink($filename.".lock");

	return $count;

}

Initial URL
http://www.barattalo.it/2009/12/03/how-many-users-are-connected/

Initial Description
Count how many users are connected to a site (execute this function in every page, put it in the header).

Initial Title
How many users are connected to a site.

Initial Tags
ip

Initial Language
PHP