0

所以,很多年前我曾经玩过Web开发,我有点生疏,但没那么生疏!

前几天我刚刚制作了一个完整的视频游戏页面,使用 PHP 变量将不同的游戏加载到不同大小的 iframe 中。话虽如此,为什么我不能让一个简单的 PHP 计数器工作呢?我已经在一个又一个脚本之后下载了脚本,将 txt 文件 CHMOD'ed 为 777,整个 9. Chrome 不支持命中计数器之类的吗?似乎即使是我访问的通过它们提供命中计数器的网站在他们的演示页面上也不起作用!什么是交易?我记得几年前,我复制了大约 10 行非常基本的代码,将其保存为 PHP 文件,将其与空白 txt 文件一起上传到服务器,然后每次都能完美运行。发生了什么变化?

这是我正在使用的代码。顺便一提。我尝试将其添加到我的 index.html 中,我还尝试将其用作单独的 php 文件并使用 INCLUDE 调用它,一切。似乎没有任何效果。

<?php

$open = fopen(“hits.txt”, “r+”);
$value = fgets($open);
$close = fclose($open);

$value++;

$open = fopen(“hits.txt”, “w+”);
fwrite($open, $value); // variable is not restated, bug fixed.
$close = fclose($open);

?>

然后我想要显示结果的地方,我有,

<?php echo $value; ?>

有任何想法吗?

4

4 回答 4

7

您可以将以下内容用作基本命中计数器:

$counter = file_get_contents('./file') + 1;
file_put_contents('./file', $counter);

您可能想要实施某种方式来检查它不仅仅是一个用户刷新页面......简单的事情就像:

session_start();
if(empty($_SESSION['visited'])){
    $counter = file_get_contents('./file') + 1;
    file_put_contents('./file', $counter);
}

$_SESSION['visited'] = true;

将检查用户是否已经访问过相同的站点,session如果有,则不增加值。

于 2013-09-23T12:58:46.137 回答
2

您可以在 PHP 中创建一个 ajax 文件并在某个时间间隔内调用 ajax 并在页面上显示命中计数器。

为此首先创建一个 ajax 文件:ajax_user_count.php

<?php
session_start();
$log_file_name = 'traffic_count.log';
$count = file_get_contents($log_file_name, true);
if(empty($count)){$count = 0;}  
if(isset($_POST['action'])){
    $action = $_POST['action'];
    if($action == 'enter'){
        if(!isset($_SESSION['user_count'])){
            $count += 1;
            if($count == 0) { $count = 1; }
            $_SESSION['user_count'] = $count;
            $message = $count; 
            file_put_contents($log_file_name, $message);        
        }
    } else if($action == 'leave'){
        $count -= 1;
        $_SESSION['user_count'] = $count;
        $message = $count; 
        file_put_contents($log_file_name, $message);
        session_destroy();  
    }
}

echo $count;
die;

然后通过这个调用ajax文件

$(document).ready(function(){
    get_enter_web_traffic();
    setInterval(function(){ 
        get_enter_web_traffic();
    }, 1000);
    $(window).bind("beforeunload", function() {
        $.ajax({
                type: "POST",
                async: false,
                cache: false,
                url: "ajax_user_count.php",
                data: {'action' : 'leave'},
                success: function(result) { },
                error: function(data) { location.reload(); 
            }
        });
    });     

});

function get_enter_web_traffic(){
    var data = {'action' : 'enter'};    
    $.post('ajax_user_count.php',data,function(response){
        $('#count_user').html(response); // website hit count
    }); 
}
于 2016-10-05T13:13:35.343 回答
1

我目前正在学习 PHP。想出了这个易于实现的计数器。一探究竟

<?php 

$filename = "count.txt";// the text file to store count
// Open the file foe reading current count
$fp = fopen($filename, 'r');

//Get exiting count
$count = fread($fp, filesize($filename));

//close file
fclose($fp);

//Add 1 to the existing count
$count = $count +1;

//Display the number of hits
echo "<p>Total amount of Hits:" . $count. "</p>";

//Reopen to modify content
$fp = fopen($filename, 'w');

//write the new count to file
fwrite($fp, $count);

//close file
fclose($fp);

?>

希望这段代码对某人有用。

于 2019-08-29T05:51:22.537 回答
0
file_put_contents('count.txt',"\n",FILE_APPEND|LOCK_EX);
$count = filesize("count.txt"); 

它将一个字节附加到文件并读取文件大小作为计数器。这是我用 0.1 毫秒发现的最快且无错误的逻辑

于 2021-08-27T07:44:14.917 回答