在每个网页上添加PHP综合浏览量计数器

时间:2016-09-26 01:32:11

标签: php mysql html5

我想要完成的是一个简单的PHP页面浏览计数器,用于我的每个PHP页面,我知道这也可以通过MYSQL数据库完成,但我只想要一个简单的页面视图计数器,严格使用PHP(我已经完成)。

我已经找到了一个可行的脚本,但它只显示一个页面的视图,我想知道,如果有一种编辑代码的方法,以便每个页面包含计数器,视图的数量会有所不同对于该页面。

我发现要遵循的说明是http://tutorial.world.edu/web-development/how-to-create-page-view-hit-counter-code-using-php-script/

这是我的代码,我编辑了我的需求:

<?php
function pageview_counter(){
if (isset($visitor)){
if ($visitor=="visited")
include("pageview-counter.txt");
} else {
$file=fopen("pageview-counter.txt","r+");
$result=fread($file,filesize("pageview-counter.txt"));
fclose($file);
$result += 1;
$file=fopen("pageview-counter.txt","w+");
fputs($file,$result);
fclose($file);
include("pageview-counter.txt");
}
}
?>

对于柜台:

<p class="num-of-views">Views: <strong><?php echo pageview_counter(); ?></strong></p>

我按照指示在我的网站目录中创建了文本文件,我只是想知道我想要的是否真的可以完成。任何帮助将不胜感激!

2 个答案:

答案 0 :(得分:0)

如前所述,MySQL数据库在这里是更好的选择,但如果你坚持使用文件,我会使用自定义的INI文件:

page1 = 0
page2 = 0
page3 = 0

您可以根据需要添加任意数量的页面,然后更改其名称。只需将其保存为pageCounts.ini即可。接下来,您将需要能够读取和写入此ini文件。我建议为此创建一个单独的PHP文件,并将其包含在页面中:

<?php

// Parse the ini file (Read)
$ini = parse_ini_file("pageCounts.ini");

// Save to ini file (Write)
function write_php_ini($array, $file = "pageCounts.ini")
{
    $res = array();
    foreach($array as $key => $val)
    {
        if(is_array($val))
        {
            $res[] = "[$key]";
            foreach($val as $skey => $sval) $res[] = "$skey = ".(is_numeric($sval) ? $sval : '"'.$sval.'"');
        }
        else $res[] = "$key = ".(is_numeric($val) ? $val : '"'.$val.'"');
    }
    safefilerewrite($file, implode("\r\n", $res));
}

function safefilerewrite($fileName, $dataToSave)
{    if ($fp = fopen($fileName, 'w'))
    {
        $startTime = microtime(TRUE);
        do
        {            $canWrite = flock($fp, LOCK_EX);
           // If lock not obtained sleep for 0 - 100 milliseconds, to avoid collision and CPU load
           if(!$canWrite) usleep(round(rand(0, 100)*1000));
        } while ((!$canWrite)and((microtime(TRUE)-$startTime) < 5));

        //file was locked so now we can store information
        if ($canWrite)
        {            fwrite($fp, $dataToSave);
            flock($fp, LOCK_UN);
        }
        fclose($fp);
    }

}

?>

来源:How to read and write to an ini file with PHP

将其另存为iniOperations.php并将其包含在您需要计数器的页面中。将page1更改为您包含计数器的页面。

<?php

// Include iniOperations.php if it isn't included yet
require_once "iniOperations.php";

// Show the current number of visits:
echo "Number of visits to this page: ". $ini["page1"];

// Increase the number of visits by 1 and write to ini file
$ini["page1"]++;

write_php_ini($ini);

?>

答案 1 :(得分:0)

不要忘记:apache 用户的读/写权限。
www-数据用户?
作为 root, chown www-data:www-data INSERTFILENAME
它通过简单的 php 读/写操作解决了我的问题
在文本文件上。