サブスクリプション閲覧サービスを販売しています。一旦人々が支払いを受けると、彼らは彼らに電子メールで送られた一意のURLを得る。リンクは一定の時間が経過した後に期限切れになるように設定されていますが、最初の3つのIPアドレスが著作権侵害を止める前にリンクを使用することを許可したいだけです。私はこのように、何千ものログインを保持しながら別のデータベースを稼働させないようにしています。私はディレクトリに書き込むことができ、リンクのサフィックス(この場合はzFZpj4b2AkEFz%2B3O
)にファイル名を持ち、ファイルに最大3つのIPがリストされていると仮定します。アドバンストPHP:最初の3つのIPで一意のURLをクリックできるようにする
それはすべてがこれまでに電子メールで次のようになりますIPアドレスカウントと一意のリンクがなければうまく機能:
<?
$time = time();
include('settings.php');
class RC4Crypt {
/**
* Encrypt the data.
* @param string private key.
* @param string data to be encrypted.
* @return string encrypted string.
*/
function encrypt ($pwd, $data)
{
$key[] = '';
$box[] = '';
$pwd_length = strlen($pwd);
$data_length = strlen($data);
for ($i = 0; $i < 256; $i++)
{
$key[$i] = ord($pwd[$i % $pwd_length]);
$box[$i] = $i;
}
for ($j = $i = 0; $i < 256; $i++)
{
$j = ($j + $box[$i] + $key[$i]) % 256;
$tmp = $box[$i];
$box[$i] = $box[$j];
$box[$j] = $tmp;
}
$cipher = '';
for ($a = $j = $i = 0; $i < $data_length; $i++)
{
$a = ($a + 1) % 256;
$j = ($j + $box[$a]) % 256;
$tmp = $box[$a];
$box[$a] = $box[$j];
$box[$j] = $tmp;
$k = $box[(($box[$a] + $box[$j]) % 256)];
$cipher .= chr(ord($data[$i])^$k);
}
return ($cipher);
}
/**
* Decrypt the data.
* @param string private key.
* @param string cipher text (encrypted text).
* @return string plain text.
*/
function decrypt ($pwd, $data)
{
return RC4Crypt::encrypt($pwd, ($data));
}
}
if(!isset($_GET['file']) || empty($_GET['file'])) {
echo 'Invalid Request';
return;
}
$data = $_GET['file'];
$id_time = RC4Crypt::decrypt($secret,base64_decode(rawurldecode($data)));
list($product_id,$timestamp) = explode('|',$id_time);
if(!isset($products[$product_id])) {
echo 'Invalid Request';
return;
}
if ($timestamp < $time - ($download_life * 60)) {
echo 'Link Expired';
return;
}
if(isset($products[$product_id])) {
print ("<html><head><meta http-equiv=Refresh content=\"0;URL=http://www.blah.com/view/\"></head><body></html>");
return;
}
?>
:
http://www.blah.com/download.php?file=zFZpj4b2AkEFz%2B3O
ファイルdownload.phpはこのようになります
あまりにも長く過ごしてしまった人には、これまでどんな親切な魂も同情できますか? :) どうもありがとう。
--edit -
思考:どのようなリンクが最初に押されたときにサーバー側のクッキーを保存し、それが存在する場合にアクセスを拒否について3つのIPを忘れますか?
あなたは、いくつかの人間の検証を必要とする、検索エンジンのツールバーやウイルスプログラムのようなものは、自動的にハイパーリンクに従いますし、不必要な印象としてカウントすることができます。 – Dunhamzzz
ありがとうございますが、それは期限付きの固有の電子メールです。 –