> 백엔드 개발 > PHP 튜토리얼 > 如何实现不同IP地址的浏览次数统计

如何实现不同IP地址的浏览次数统计

WBOY
풀어 주다: 2016-06-23 14:18:45
원래의
1278명이 탐색했습니다.

存储 PHP HTML 函数 Color

<?php// 访客计数器函数function counter() {	!empty($_GET['weburl'])  ||  die('weburl不能为空');	$weburl = $_GET['weburl'];	$file = '/usr/local/apache/htdocs/MyTests/counter.txt';	if (! file_exists($file)) {		$num = 1;		$cf = fopen($file, 'w');		fwrite($cf, $weburl.' '.$num);		fclose($cf);	} else {		$cf = fopen($file, 'rw');		$num = fgets($cf);		$num = substr($num, 15);		fclose($cf);		++$num;		$cf = fopen($file, 'w');		fwrite($cf, $num);		fclose($cf);	}}?><html>	<head>		<title>访客计数器</title>	</head>	<body>		<center>			<h1>欢迎访问</h1><br />			<form action="counter()" name="url-form" method="get">				<div>					<input type="text" name="weburl" size="15" />					 					<input type="submit" name="Submit" value="提交" />				</div>			</form>			<hr />			<font size="7" color="red">				您是第<?php //echo counter() ?>位访客			</font>		</center>	</body></html>
로그인 후 복사





我想实现一个输入不同的IP地址并提交后,在“您是第...位访客”中显示相应IP访问了多少次。。。我用一个TXT文件存储IP地址与浏览次数,格式如下:
例:
192.168.0.22 5
192.168.5.44 10
......

这个程序应该如何修改?


回复讨论(解决方案)

<?php// 访客计数器函数function counter() {		!empty($_GET['weburl'])  ||  die('weburl不能为空');	$weburl = trim($_GET['weburl']);	$pattern = "/((25[0-5]|2[0-4]\d|1?\d?\d)\.){3}(25[0-5]|2[0-4]\d|1?\d?\d)/";	//对录入的ip格式进行判断	if(! preg_match($pattern,$weburl))		die('IP地址格式不正确;');	//使ip长度固定	$arr = explode('.',$weburl);	for($i=0;$i<4;$i++){		$arr[$i] = str_pad($arr[$i],3,' ',STR_PAD_LEFT);			}	$weburl = join('.',$arr);	$file = 'counter.txt';	if (! file_exists($file)) {		$num = 1;		$cf = fopen($file, 'w');		fwrite($cf, $weburl.'-'.$num);		fclose($cf);		return $num;	} else {		$cf = fopen($file, 'r+');		while(!feof ($cf)){			$str1 = fgets($cf);			$str2 = substr($str1,0,strpos($str1,'-'));			if($weburl == $str2){				$len = strlen($str1);				$num = (int) trim(substr($str1,strpos($str1,'-')+1));								$num++;								$str1 = $weburl.'-'.$num;				//如果存在则把指针返回到该行前,覆盖写入内容,实现修改				fseek($cf,-$len,SEEK_CUR);				fwrite($cf,$str1);				fseek($cf,$len,SEEK_CUR);				fclose($cf);				return $num;								}		}		//未找到则在末尾换行增加一行记录		fwrite($cf, "\r\n".$weburl.'-1');		return 1;	}}?><html>	<head>		<title>访客计数器</title>	</head>	<body>		<center>			<h1>欢迎访问</h1><br />			<form action="" name="url-form" method="get">				<div>					<input type="text" name="weburl" size="15" />					 					<input type="submit" name="Submit" value="提交" />				</div>			</form>			<hr />			<font size="7" color="red">				您是第<?php echo counter(); ?>位访客			</font>		</center>	</body></html>
로그인 후 복사
로그인 후 복사

<?php// 访客计数器函数function counter() {		!empty($_GET['weburl'])  ||  die('weburl不能为空');	$weburl = trim($_GET['weburl']);	$pattern = "/((25[0-5]|2[0-4]\d|1?\d?\d)\.){3}(25[0-5]|2[0-4]\d|1?\d?\d)/";	//对录入的ip格式进行判断	if(! preg_match($pattern,$weburl))		die('IP地址格式不正确;');	//使ip长度固定	$arr = explode('.',$weburl);	for($i=0;$i<4;$i++){		$arr[$i] = str_pad($arr[$i],3,' ',STR_PAD_LEFT);			}	$weburl = join('.',$arr);	$file = 'counter.txt';	if (! file_exists($file)) {		$num = 1;		$cf = fopen($file, 'w');		fwrite($cf, $weburl.'-'.$num);		fclose($cf);		return $num;	} else {		$cf = fopen($file, 'r+');		while(!feof ($cf)){			$str1 = fgets($cf);			$str2 = substr($str1,0,strpos($str1,'-'));			if($weburl == $str2){				$len = strlen($str1);				$num = (int) trim(substr($str1,strpos($str1,'-')+1));								$num++;								$str1 = $weburl.'-'.$num;				//如果存在则把指针返回到该行前,覆盖写入内容,实现修改				fseek($cf,-$len,SEEK_CUR);				fwrite($cf,$str1);				fseek($cf,$len,SEEK_CUR);				fclose($cf);				return $num;								}		}		//未找到则在末尾换行增加一行记录		fwrite($cf, "\r\n".$weburl.'-1');		return 1;	}}?><html>	<head>		<title>访客计数器</title>	</head>	<body>		<center>			<h1>欢迎访问</h1><br />			<form action="" name="url-form" method="get">				<div>					<input type="text" name="weburl" size="15" />					 					<input type="submit" name="Submit" value="提交" />				</div>			</form>			<hr />			<font size="7" color="red">				您是第<?php echo counter(); ?>位访客			</font>		</center>	</body></html>
로그인 후 복사
로그인 후 복사


多谢
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿