【问题标题】:How to limit views to a video per X hours for a certain IP address?如何限制某个 IP 地址每 X 小时观看视频的次数?
【发布时间】:2013-03-14 01:41:10
【问题描述】:

我有一个视频网站,我只想让人们每天观看一定数量的视频。

最好的方法是什么?

我目前基本上是在 .php 脚本中执行此操作:

viewvideo.php(视频 html)

<?
$_SESSION['video'] = 'myvid.mp4';
$_SESSION['hash'] = md5($randomhash); //not a hash of filename etc. just random

?> then in the html :  <video src='video.php?hash=<?=$_SESSION['hash'];?>'>

video.php(如果允许则提供视频文件

<?php
if (canThisIpViewVideo()) {
      // can view the video ok

if ($_SESSION['hash'] == $_GET['hash']) {
      // next couple of lines get the video filename (from session), add one to list of ips (so canThisIpViewVideo has data to read from), then readfile's the .mp4 vid
$videofile = $_SESSION['video'];
mysql_query("insert into viewed (ip,date) values('$ip',NOW())"); // i do sanatize input
session_destroy(); // so can only be viewed once per hash
readfile("videos/$videofile");
die();
}

如果 !canThisIpViewVideo(),这对于我服务器的短(14 秒)视频可以正常工作,但对于正常大小的视频,它加载很奇怪(视频播放器要么不会播放,会等待很长时间(20-40 秒)然后播放,如果在任何时候(在它开始播放之前)用户再次点击播放,它将再次请求它(更多来自视频播放器的错误)

.htaccess 中是否有任何方法可以将请求(对一大堆 (100) 视频)限制为每天一定数量?

大多数限制每日浏览量的大型网站是如何做到这一点的? readfile 似乎对我不起作用。如果我将 readfile 替换为 header("Location: $fullvideourl");它可以 100% 正常工作。

(另外,我可能只用一段 memcached 代码替换 mysql 请求,因为它更容易工作(旧数据自动过期(超过 1 天))

【问题讨论】:

  • (如果其中一个比 apache 更合适,我可以将另一台服务器(如节点等)放在不同的端口上)。视频也位于 /videos 中,受 .htpasswd 保护(测试除外)

标签: php apache video centos


【解决方案1】:

限制 IP 地址是个坏主意。例如,在拉脱维亚,高中拥有一个 IP。该ip后面是大约10000个用户。拥有一个公共 IP 的大公司也是如此。但是,如果您想这样做,则只需在用户打开视频时记录 IP 地址。在显示视频之前,请检查该 IP 已观看视频的次数。如果达到限制,则向用户显示。而在 DB 中,您只能计算查看次数。
mysql_query("UPDATE views SET count = count + 1 WHERE date = '$today' AND ip = '$IP'") 如果此查询返回 0,那么您必须为该 ip 插入今天的行。

编辑: 看到这个:Limit user access to user identified by IP address only 5 times a day

【讨论】:

  • 谢谢,我知道,但在他们注册之前,这是阻止内容被下载太多次的唯一方法。我确实插入了一个新行(我只是在示例代码中放入了 mysql_query() )。但问题在于如何提供大的 .mp4 视频文件
  • 1) 检查该 IP 的浏览量。 2)如果达到限制,重定向到其他页面。 3)如果没有,注册浏览量并显示视频。看这里:stackoverflow.com/questions/3697748/…
猜你喜欢
  • 2021-09-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多