是否可以计算在我的服务器上查看图像或Flash文件的次数

时间:2013-10-09 06:01:40

标签: php apache .htaccess

我想在我的一些朋友的网站上刊登我的网站广告,我想知道从每个网站查看这些广告的次数。我正在寻找解决方案。

Apache是​​否记录了从我的服务器请求文件的次数,或者是否可以创建htaccess文件来执行此操作。我不知道我应该从哪里开始,如果你们知道它,请将我转到正确的地方。

3 个答案:

答案 0 :(得分:3)

创建一个显示如下图像的php文件:

    if(file_exists($path))
    { 
        header('Content-Length: '.filesize($path));
        header('Content-Type: image/jpg');
        header('Content-Disposition: inline; filename="'.$path.'";');
        echo file_get_contents($path);
        exit;
    }

现在,您可以在图像被放出之前添加PHP代码,并且可以跟踪视图。只需确保在header()调用之前没有输出任何内容。甚至不是空格或HTML标签(否则会破坏图像)。

您可以使用.htaccess显示带有.jpg结尾的文件。

答案 1 :(得分:3)

previus帖子的建议非常好,为了完成这一点:

在您的服务器上创建一个php文件,输出您的广告的内容,并将您的广告放置在图片的朋友页面中:

<img src="http://yourdomain.com/output.php?type=jpg&id=X">

或闪光灯

<embed src="http://yourdomain.com/output.php?type=swf&id=X" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/shockwave/download/download.cgi?P1_Prod_Version=ShockwaveFlash">
</embed>

在您的php文件中,您可以检查ID以加载匹配的广告(您应该有一个数据库或csv文件,其中包含您不同添加的列表。

<?php
  if(isset($_GET["id"]))
  {
    $list = load_addlist_from_db(); // <----- here you should write you own function to load your list of possible adds e.g. as array
    if(array_key_exists($_GET["id"], $list))
    {
      $filename = $list[$_GET["id"]];
      if(is_readable($filename))
      {
        header("Content-Length: ".filesize($filename));
        // set the last modification time of downloadfile or phpscript, whatever is newer
        $modtime_str = gmdate("D, d M Y H:i:s", max(filemtime($filename),getlastmod())) . " GMT";
        header("Last-Modified: ". $modtime_str);
        switch($_GET["type"])
        {
          case "jpg":
          case "jpeg": 
          {
            header("Content-Type: image/jpg"); // coul also be "image/png", "image/gif" depending on what file you like to output
          }
          case "swf":
          {
            header("Content-Type: application/x-shockwave-flash");
          }
        }
/*
 * here you can count the request to this add (or use the bbclone code below)
 * check $_SERVER['HTTP_REFERER'] to get information from what page the file was loaded 
 */
        readfile($filename);
      }
      else $file_not_found = true;
    }
    else $file_not_found = true;
  }
  else $file_not_found = true;

  if($file_not_found)
  {
    // that tells the browser, that the requestes file doas not exist
    header("Status: 404 Not Found",true,404);
  }
?>

在此文件中,您可以在自己的数据库/文件中计算您的请求,或使用BBClone,这甚至可以计算访问者的浏览器和操作系统。

您可以在output.php中包含BBclone,如下所示:

define("_BBC_PAGE_NAME",basename($filename));
define("_BBCLONE_DIR", $_SERVER["DOCUMENT_ROOT"].DIRECTORY_SEPARATOR."bbclone");
define("COUNTER", _BBCLONE_DIR."mark_page.php");
include_once(COUNTER);

答案 2 :(得分:0)

您可以像下面一样放置图片像素,并将它们包含在他们显示您的Flash文件的文件中:

<img src="http://yourdomain.com/flashcount.php" style="display:none" />

flashcount.php中,您可以使用$_SERVER使用referrer获取其执行域的信息,并将其点击和服务器信息存储在某个数据库表中。