Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/298.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Wordpress现有计数器的总访客计数器_Php_Wordpress - Fatal编程技术网

Php Wordpress现有计数器的总访客计数器

Php Wordpress现有计数器的总访客计数器,php,wordpress,Php,Wordpress,我在WordPress插件中制作一个没有MySQL的简单访客计数器。为了实现这一点,我制作了一个简单的文本visitor.db,其中存储了一段时间的访问者ip,并显示当前在线访问者的ip总数,一段时间后删除历史日志。但是现在我想从那visitor.db实现,以保存另一个的.db,它计算到今天为止的总访客数。可能吗 如果我在循环时计数?如何将其保存到另一个.db $counter = 0; while(..) { $counter++; } echo $counter; 例如,现

我在WordPress插件中制作一个没有MySQL的简单访客计数器。为了实现这一点,我制作了一个简单的文本
visitor.db
,其中存储了一段时间的访问者ip,并显示当前在线访问者的ip总数,一段时间后删除历史日志。但是现在我想从那
visitor.db
实现,以保存另一个
的.db
,它计算到今天为止的总访客数。可能吗

如果我在循环时计数?如何将其保存到另一个.db

$counter = 0;
while(..) {
      $counter++; 
}

echo $counter;
例如,现在它在线显示:70 但我想实现这样的目标:145875458在线:70

define('VISITOR_DATA_PATH',plugin_dir_path( __FILE__ ));
$dbfile = VISITOR_DATA_PATH . "visitors.db"; 
$expire = 300; // average time in seconds to consider someone online before removing from the list

if(!file_exists($dbfile)) {
    die("Error: Data file " . $dbfile . " NOT FOUND!");
}

if(!is_writable($dbfile)) {
    die("Error: Data file " . $dbfile . " is NOT writable! Please CHMOD it to 666!");
}

 function getIPs() {
    if(isset($_SERVER['HTTP_X_FORWARDED_FOR'])) $ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
    elseif(isset($_SERVER['REMOTE_ADDR'])) $ip = $_SERVER['REMOTE_ADDR'];
    else $ip = "0";
    return $ip;
}

function CountVisitors() {
    global $dbfile, $expire;
    $cur_ip = getIPs();
    $cur_time = time();
    $dbary_new = array();

    $dbary = unserialize(file_get_contents($dbfile));
    if(is_array($dbary)) {
        while(list($user_ip, $user_time) = each($dbary)) {
            if(($user_ip != $cur_ip) && (($user_time + $expire) > $cur_time)) {
                $dbary_new[$user_ip] = $user_time;
            }
        }
    }
    $dbary_new[$cur_ip] = $cur_time; // add record for current user

    $fp = fopen($dbfile, "w");
    fputs($fp, serialize($dbary_new));
    fclose($fp);

    $out = sprintf("%3d", count($dbary_new)); // format the result to display 3 digits with leading 0's
    return $out;
}

function visitor_counter_shrocode(){
    $visitors_online = CountVisitors();

    ob_start();
    $output='<span> Online: <b>'.$visitors_online.'</b></span>';
    ob_end_clean();
    return $output;
}
add_shortcode('onlinevisitor','visitor_counter_shrocode');
define('VISITOR_DATA_PATH',plugin_dir_PATH('uuu FILE_u));
$dbfile=VISITOR\u DATA\u路径。“访客数据库”;
$expire=300;//在从列表中删除之前考虑某人的平均时间
如果(!file_存在($dbfile)){
die(“错误:数据文件“$dbfile.”未找到!”);
}
如果(!是可写的($dbfile)){
die(“错误:数据文件“$dbfile.”不可写!请将其CHMOD到666!”);
}
函数getIPs(){
如果(isset($_SERVER['HTTP_X_FORWARDED_FOR']))$ip=$_SERVER['HTTP_X_FORWARDED_FOR'];
elseif(isset($\u服务器['REMOTE\u ADDR']))$ip=$\u服务器['REMOTE\u ADDR'];
else$ip=“0”;
返回$ip;
}
函数()的作用{
全局$dbfile,$expire;
$cur_ip=getIPs();
$cur_time=time();
$dbary_new=array();
$dbary=unserialize(文件获取内容($dbfile));
if(是_数组($dbary)){
while(列表($user\u ip,$user\u time)=每个($dbary)){
如果($user\u ip!=$cur\u ip)&($user\u time+$expire)>$cur\u time)){
$dbary\u new[$user\u ip]=$user\u time;
}
}
}
$dbary\u new[$cur\u ip]=$cur\u time;//为当前用户添加记录
$fp=fopen($dbfile,“w”);
fputs($fp,serialize($dbary_new));
fclose($fp);
$out=sprintf(“%3d”,count($dbary_new));//格式化结果以显示前导为0的3位数字
退回$out;
}
函数访问者\u计数器\u shrocode(){
$visitors_online=CountVisitors();
ob_start();
$output='Online:'.$visitors_Online';
ob_end_clean();
返回$output;
}
添加快捷码(“在线访问者”、“访问者\计数器\密码”);