我想要完成的是一个简单的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>
我按照指示在我的网站目录中创建了文本文件,我只是想知道我想要的是否真的可以完成。任何帮助将不胜感激!
答案 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 读/写操作解决了我的问题
在文本文件上。