PHP简单的防刷计数器--已经图片化
请先把线面的内容导入数据库 CREATE TABLE aibiancheng_counter( id INT UNSIGNED NOT NULL AUTO_INCREMENT, user_ip CHAR(25) NOT NULL, diftime INT UNSIGNED NOT NULL, PRIMARY KEY(id) ); //counter.php <html> <head> <title></title> </head> <body> <?php global $ip,$now; global $dbhost,$dbuser,$dbpassword,$imgpath; //下面的配置文件必须准确的填写,不然的话,肯定运行不正常的 $dbhost="您的MYSQL服务器名"; //如果你的空间和MYSQL数据库在一起的话一般是localhost $dbuser="用户名"; $dbpassword="数据库密码"; $dbname="数据库名"; //配置文件结束,下面的内容非有必要,请勿改动 $user_IP = ($_SERVER["HTTP_VIA"]) ? $_SERVER["HTTP_X_FORWARDED_FOR"] : $_SERVER["REMOTE_ADDR"]; $user_IP = ($user_IP) ? $user_IP : $_SERVER["REMOTE_ADDR"]; //echo $user_IP; //下面的内容是一个函数用来得到访问者的IP function get_real_ip(){ $ip=false; if(!empty($_SERVER["HTTP_CLIENT_IP"])){ $ip = $_SERVER["HTTP_CLIENT_IP"]; } if (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) { $ips = explode (", ", $_SERVER['HTTP_X_FORWARDED_FOR']); if ($ip) { array_unshift($ips, $ip); $ip = FALSE; } for ($i = 0; $i < count($ips); $i++) { if (!eregi ("^(10|172\.16|192\.168)\.", $ips[$i])) { $ip = $ips[$i]; break; } } } return ($ip ? $ip : $_SERVER['REMOTE_ADDR']); } //获取访问者的IP结束,下面的内容是展示访问者的IP $ip=get_real_ip(); //展示访问者的IP结束,下面的内容是获得登录时服务器的时间 $now=time(); //下面的语句中减去了一个庞大的数,这是为了减小数据量因为time函数得到的是当前的时间 //它是以一个比较老的时间做起点,如果我们用它的起点,数据量将比较的庞大,减去一个很大的数 //可以让我们的数据处理简单,占用的数据库空间小 $now=$now-1188032807; //下面的语句是用来查询相同的IP在你的网站上的访问记录的 $link = mysql_connect($dbhost, $dbuser, $dbpassword) or die("Could not connect : " . mysql_error()); mysql_select_db($dbname) or die("Could not select database"); /* 执行 SQL 查询 */ global $result; $query = "SELECT * FROM aibiancheng_counter WHERE user_ip='$ip'"; $result = mysql_query($query) or die("Query failed : " . mysql_error()); global $col_value; while ($line = mysql_fetch_array($result, MYSQL_ASSOC)) foreach ($line as $col_value); if((!$result)||$now-$col_value>=600)//600s是用来防止恶意刷新,自己根据网站的统计要求配置 { $con = mysql_connect($dbhost,$dbuser,$dbpassword); mysql_select_db($dbname, $con); $strSql="insert into aibiancheng_counter (user_ip,diftime) values('$ip','$now')"; $result=mysql_query($strSql,$con); mysql_close($con); } /*连接数据库*/ $link = mysql_connect($dbhost, $dbuser, $dbpassword) or die("Could not connect : " . mysql_error()); mysql_select_db($dbname) or die("Could not select database"); /* 执行 SQL 查询 */ $query = "SELECT * FROM aibiancheng_counter"; $result = mysql_query($query) or die("Query failed : " . mysql_error()); global $counter,$counter_len; while ($line = mysql_fetch_array($result, MYSQL_ASSOC)) $counter++; $counter_len=strlen($counter); for($i=8-$counter_len;$i>0;$i--) echo "<img src='pic/0.jpg' align=left>"; //这里涉及到图片,如果你使用的不是JPG的请更改,或者文件夹名不一样,请改 for($i=0;$i<$counter_len;$i++) { $number=substr($counter,$i,1); if(isset($number)) { echo "<img src='pic/".$number.".jpg' align=left>";//同上说明 } } ?> </body> </html>查看完整版本: PHP简单的防刷计数器--已经图片化
Tags: