2013-03-24 44 views
0

我有一個視頻網站,我只想讓人們每天觀看一定數量的視頻。如何限制某個IP地址每X小時的視頻觀看次數?

這樣做的最好方法是什麼?

我目前基本上是這樣的.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(); 
} 

這個工程確定爲短(14秒)的視頻,我的服務器,如果!眥sIpViewVideo(),但對於正常大小的視頻,它會加載一些奇怪的東西(視頻播放器不會播放它,會等待時間(20-40秒)然後播放,如果在任何時候(開始播放之前)用戶都會播放再次它會要求它(更多的視頻播放器的錯誤)

是否有任何方式在.htaccess限制請求(到一大堆(100)的視頻)到每天一定數量?

每天限制觀看次數的大多數大型網站如何做到這一點? readfile似乎不適合我。如果我將頭文件替換爲readfile(「Location:$ fullvideourl」);它工作100%很好。

(另外,我可能會取代的代碼只是一個memcached的一點mysql的請求,因爲它的工作更容易(舊數據的自動到期(超過1天))

+0

(我可以把另一臺服務器(如節點等)的不同端口上,如果這些人會比Apache更適合)。也視頻是在/視頻受到.htpasswd保護(除了測試) – slycat 2013-03-24 15:17:10

回答

2

限制IP地址是壞主意。對於例如,在拉脫維亞的高中有一個IP,後面說ip是大約10000個用戶,同樣是大公司,有一個公有IP,但是如果你想這樣做,那麼只需記錄IP地址,當用戶打開視頻。在顯示視頻之前,請檢查該IP已經觀看的視頻的次數,如果達到限制,則顯示給用戶,並且在數據庫中,您只能計算視圖的數量
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

+0

謝謝,我知道,但它是唯一的方法來阻止下載內容太多次,直到他們註冊。我插入一個新的行(ive只是放在示例代碼中的mysql_query())。但問題是關於如何提供大的.mp4視頻文件 – slycat 2013-03-24 15:41:48

+0

1)檢查該IP有多少視圖。 2)如果達到限制,重定向到其他頁面。 3)如果不是,則註冊綜合瀏覽量並顯示視頻。 看這裏:http://stackoverflow.com/questions/3697748/fastest-way-to-serve-a-file-using-php – Guntis 2013-03-24 15:44:39

相關問題