跟踪图像视图 - PHP

时间:2010-12-29 23:40:19

标签: php image analytics tracking

我希望我的应用能够判断过去30天内是否还没有查看过图像并将其删除(以及与之关联的数据库中的数据)。我知道你可以动态地读取PHP并输出图像,但我听说它在系统上非常沉重。即使直接观看图像,有没有办法让我跟踪这些点击? (htaccess能够做到吗?)提前谢谢。

4 个答案:

答案 0 :(得分:6)

对于.htaccess这样的事情......

RewriteRule ^image/(.*)$ image.php?id=$1

对于PHP ......

$id = $_GET["id"]; //don't forget to sanitize
mysql_query("UPDATE images SET views = views + 1 WHERE image = '$id'"); //update no of views
header("Content-Type: image/jpeg"); //send image header
readfile($id); //output file to browser

答案 1 :(得分:3)

您可以解析HTTP日志并在事后进行此分析。

尽管如此,我仍然建议使用“动态PHP文件输出图像”方法 - 请注意,PHP文件可以简单地流出文件。是的,它会慢于完全不通过PHP,但它不会对你的系统产生重大影响。

答案 2 :(得分:0)

您可以创建一个脚本来获取图像并ping数据库以显示图像已被查看。通过将脚本的返回类型设置为image/jpg,您只需使用此脚本而不是直接访问图像:

<?php
//simplified image display script

$imagepath="phpimages/$id.jpg";
$db->pingImage($id);
$image=imagecreatefromjpeg($imagepath);
header('Content-Type: image/jpeg');
imagejpeg($image);

?>

然后使用:

<img src='fetchimage.php?id=478' alt='tracked image' />

答案 3 :(得分:0)

据我所知,你需要有一个数据库。

示例架构:

Images
  id (int, PK)
  path (text)
  hits (int)

PHP:

// get_image.php
// note, this is just an example and I'm not considering security or hacking attempts
$sql = mysql_query('SELECT * FROM images WHERE id = '.$_GET['id']);
$img

if(mysql_num_rows($img) == 1)
  while($row = mysql_fetch_assoc($sql))
    $img = $row;
else
  // handle some error

mysql_query("UPDATE images SET hit = hits + 1 WHERE id = ".$_GET['id']);
$img = file_get_contents($img['path']);
header('image/jpg');
echo $img;

这里可能有错误,我只是给你一个大致的想法......