ユーザーがモバイル デバイスを使用しているかどうかを検出するには、php-mobile-detect クラスを使用できます。すべてのデバイスに対応するために独自に作成するよりもはるかに簡単です。
より大きなホスティング プランが必要かどうかを判断するには、トラフィック パターンを監視する必要があります。30,000人の来場者はたくさんの来場者です。最初は 30,000 ページビュー (または 30,000 訪問) になる可能性が高くなります。そうは言っても、サーバーの負荷はすべて、いつ来るかによって異なります。500 人の訪問者があなたのマシンに接続し、同じファイルを一度にダウンロードすると、ダウンする可能性があります。DS としての共有ホスティングでは、クラスター上の他の人を危険にさらすのに十分なトラフィックを受信している場合、VPS プランまたは 1 人でいるボックスにアップグレードさせようとする可能性があります。また、サイトが必要とするリソースが多すぎる場合は、スロットリングも有効になります。
リンクを提供し、正当なトラフィックを制限するという点では、ユーザーの IP アドレス ( $_SERVER['REMOTE_ADDR']
)、セッション ID ( SESSION()
)、表示時間を確認し、それをヘッダー リダイレクト用のスクリプトに渡して、共有リンクへのアクセスを防ぐことができます。
http://domain.com/download.php?f=04293D&ts=1367827755&t=25d55ad283aa400af464c76d713c07ad
ファイルを配信するページで、それが同じユーザー、同じセッション (ローカル ネットワーク上でリンクしている場合)、およびタイムスタンプであることを確認できます。
<?php
session_start();
if(!empty($_GET['f'])){
$f = $_GET['f'];
} else {
exit();
}
if(!empty($_GET['ts'])&&preg_match('!^[0-9]+$!',$_GET['ts'])){
$tsIn = $_GET['ts'];
} else {
exit();
}
$testHash = md5($_SERVER['REMOTE_ADDR'].session_id().$tsIn.'s@lt3d');
if(!empty($_GET['t'])&&$testHash==$_GET['t']){
// We'll be outputting an MP3
header('Content-type: audio/mpeg');
// It will be called audio.mp3
header('Content-Disposition: attachment; filename="audio.mp3"');
// To prevent mining the MP3 source is in the safe folder named '/._mp3s_safe/'
readfile($_SERVER['DOCUMENT_ROOT'].'/._mp3s_safe/original.mp3');
} else {
exit();
}
?>
このコードには含めていませんが、ファイルが一定時間内に要求されたかどうかを確認することもできます。また、ユーザーに電子メール アドレスの提供を求めることでユーザーを確認し、トラフィックが問題になる場合はファイルをダウンロードするためのリンクを電子メールで送信することもできます。また、タイムスタンプ ハッシュ法を使用して、誰かがダウンロード用のプログラムを使用しているかどうかを確認することもできます。ファイルのダウンロードが速すぎるか、他のダウンロードが多すぎる場合は、ファイルを待機させるか、マシンからのトラフィックが多すぎるというエラーでスクリプトを停止させることができます。