主题:[原创]PHP简单的防刷计数器--已经图片化
单独的效果演示地址www.aibiancheng.cn/counter.php
整体效果演示www.aibiancheng.cn
请先把线面的内容导入数据库
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>
附件中有我使用的图片,相信大家会做的更好的啊
整体效果演示www.aibiancheng.cn
请先把线面的内容导入数据库
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>
附件中有我使用的图片,相信大家会做的更好的啊