【问题标题】:PHP hit counter issuePHP命中计数器问题
【发布时间】:2016-03-14 07:14:43
【问题描述】:

我有 3 个 php 页面。

Counter.php - 我希望此文件显示计数器 2、计数器 3 获得了多少点击。

<!DOCTYPE html>
<html>
  <head>
    <title>Counter</title>
  </head>
  <body>
    You visited page Counter2
    <?php include 'Counter2.php'; echo $Counter; ?>
    Times.
    You visited page Counter3
    <?php  include 'Counter3.php'; echo $Counter3; ?>
    Times.
  </body>
</html>

Counter2.php - 我想统计该页面的点击量。

<?php

  session_start();

  if(isset($_SESSION["counter"]))
  {
    $counter = $_SESSION["counter"];
  }
  else
  {
     $counter = 0;
  }
  $_SESSION["counter"] = $counter + 1;

?>

<!DOCTYPE html>
<html>
  <head>
    <title>Counter</title>
  </head>
  <body>
    <?= $counter ?>     
  </body>
</html>

Counter3.php - 我想统计该页面的点击量。

<?php

  session_start();

  if(isset($_SESSION["counter3"]))
  {
    $counter3 = $_SESSION["counter3"];
  }
  else
  {
    $counter3 = 0;
  }

  $_SESSION["counter3"] = $counter3 + 1;

?>

<!DOCTYPE html>
<html>
  <head>
    <title>Counter</title>
  </head>
  <body>
  You visted this page this many times:
  <?= $counter3 ?>
  </body>
</html>

现在,一切正常,但是,当我包含 php 文件 &lt;?php include 'Counter3.php'; echo $Counter3; ?&gt; 当我加载 Counter.php 文件时,它会继续增加点击次数。我不想这样做,我只想让 Counter.php 记录 Counter2 和 Counter3 的点击次数。 并停止 Counter.php 增加点击次数。

【问题讨论】:

    标签: php database


    【解决方案1】:

    您可以使用$_SERVER['REQUEST_URI'] 为counter2.php 和counter3.php 添加额外的if,如果$_SERVER['REQUEST_URI'] 指向counter.php,您可以跳过递增计数器

    【讨论】:

    • 有点混乱,伙计!不过我明白你的意思!谢谢你的帮助。
    • 我应该写的更清楚,对不起!无论如何,很高兴能帮上忙,如果没有麻烦,你能不能按答案上的箭头!
    【解决方案2】:

    这个问题有几种选择:

    1. 将这两个值保存在数据库中并通过 counter.php 访问这些值,而不是包含文件
    2. 使用$_SERVER['REQUEST_URI'] 让计数器仅在 URI 不包含 counter.php 时递增

    【讨论】:

      【解决方案3】:

      包含页面会使代码运行,因此会增加页面中的所有计数器。而是直接使用$_SESSION[] 变量。

      <?php
        session_start()
      ?>
      <!DOCTYPE html>
      <html>
      <head>
      <title>Counter</title>
      </head>
      <body>
      You visited page Counter2 <?php  echo $_SESSION["counter2"]; ?> Times.
      You visited page Counter3 <?php  echo $_SESSION["counter3"]; ?> Times.
      </body>
      </html>
      

      此外,在 PHP 中,您可以执行以下操作:

      $_SESSION["counter3"] = isset($_SESSION["counter3"]) ? $_SESSION["counter3"] : 0;
      //$_SESSION["counter3"] = $_SESSION["counter3"] ?? 0; // only in PHP 7
      

      另外,您不必在每个页面上都创建此代码,因为从长远来看它可能会变得混乱。

      <?php #counter.php
        if(session_status() == PHP_SESSION_NONE){
          session_start();
        }
      
        if(isset($_SESSION['counter'][$_SEVER['REQUEST_URI']])){
          $_SESSION['counter'][$_SERVER['REQUEST_URI']] = $_SESSION['counter'][$_SEVER['REQUEST_URI']] + 1
        } else {
          $_SESSION['counter'][$_SERVER['REQUEST_URI']] = 1;
        }
      
        function countpagetimes(){
          return $_SESSION['counter'][$_SERVER['REQUEST_URI']];
        }
      ?>
      
      <?php #somepage.php
        include 'counter.php';
      
        echo 'You visited this page ' . countpagetimes() . ' times'.
      
      ?>
      

      【讨论】:

      • 感谢您的帮助,通常不明白这一点,当您说“您不必在每个页面上创建此代码”时,您提供给我的代码我应该把它放在哪里?在 Counter.php 文件或 Counter2、Counter3 中?它是如何工作的?对不起,我是 PHP 的新手。干杯!
      • 注意&lt;?php #counter.php&lt;?php #somepage.php
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-09-28
      • 1970-01-01
      • 2015-07-20
      • 2013-03-14
      相关资源
      最近更新 更多