代码一:
<?php
function counter(){
$file='counter.txt';
if(!file_exists($file)){
$num=0;
$cf=fopen($file,"w");
fwrite($cf,$num);
fclose($cf);
}
else{
$cf=fopen($file,"rw");
$num=fgets($cf);
fclose($cf);
}
$num++;
$cf=fopen($file,"w");
fwrite($cf,$num);
fclose($cf);
return $num;
}
?>
代码二:
<?php
require("function.php");
?>
<html>
<head>
<title>访客计数器</title>
</head>
<body>
您是第<?php echo counter();?>位访客!!!
</body>
</html>
文本:
我是直接在文本里写的数字,超过17为数字就会显示这样数字的格式。
求解!!!
创建一个数据库表
表名:table_counter
字段:number int(10)
1.显示统计数据
$sql = "SELECT * FROM table_counter";
2.每次刷新页面 执行sql
$sql = "UPDATE table_counter SET number= number+ 1";
如果要做的精确一点
在加一个表
table_visit
字段:ip
1更次刷新取得游客$ip;
2.取得$ip后.查询 table_vist .
如果存在则不更新table_counter.
如果不存在,则更新table_vist ,更新语句同上.并把$ip插入table_visit
如果还需要做的更人性化一点.设置一个时间间隔,比如说10分钟.$diff = 600;
在table_visit再加上一个字段
datetime :int(10)(时间戳).记录游客访问时间.
1更次刷新取得游客$ip 和 时间$date = time();
2.查询 table_vist .
$sql = "SELECT * FROM table_vist WHERE ip = '$ip'";
3.如果不存在.则把$ip和$date插入表table_vist.
$sql = "INSERT INTO table_vist SET ip = '$ip',timedate=$date";
并更新table_counter;
4.如果存在,则判断该条查询结果的timedate 和 现在时间$date,的差值.和 $diff比较
少于则不做任何操作.
大于则更新table_vist 。$sql = "UPDATE table_vist SET timedate = $date WHERE ip = '$ip'";
并更新table_visit;追问
表名:table_counter
字段:number int(10)
1.显示统计数据
$sql = "SELECT * FROM table_counter";
2.每次刷新页面 执行sql
$sql = "UPDATE table_counter SET number= number+ 1";
如果要做的精确一点
在加一个表
table_visit
字段:ip
1更次刷新取得游客$ip;
2.取得$ip后.查询 table_vist .
如果存在则不更新table_counter.
如果不存在,则更新table_vist ,更新语句同上.并把$ip插入table_visit
如果还需要做的更人性化一点.设置一个时间间隔,比如说10分钟.$diff = 600;
在table_visit再加上一个字段
datetime :int(10)(时间戳).记录游客访问时间.
1更次刷新取得游客$ip 和 时间$date = time();
2.查询 table_vist .
$sql = "SELECT * FROM table_vist WHERE ip = '$ip'";
3.如果不存在.则把$ip和$date插入表table_vist.
$sql = "INSERT INTO table_vist SET ip = '$ip',timedate=$date";
并更新table_counter;
4.如果存在,则判断该条查询结果的timedate 和 现在时间$date,的差值.和 $diff比较
少于则不做任何操作.
大于则更新table_vist 。$sql = "UPDATE table_vist SET timedate = $date WHERE ip = '$ip'";
并更新table_visit;追问
怎么像没有关联。。。能说具体些吗?我是写到文本里的。
温馨提示:答案为网友推荐,仅供参考
第1个回答 2013-10-15
PHP处理大数字的时候,会自动转换为科学计数法,不过,你可以使用下面方法还原它。
希望可以帮到你。
追问如果不用科学记数法就不准确了,自己在建立好的counter.txt中写入16位数以上的数字显示的不准确。难道你们设计计数器没有考虑过这方面内容?能不能int转化成double?但是超过32位不是又出现这类型问题了?求解。
第2个回答 2013-10-15
$a = 123456789012345678;
$b = 1
echo bcadd($a, $b);
$b = 1
echo bcadd($a, $b);