2016-01-10 106 views
1

我有一個腳本來給出一個獨特的下載鏈接。下面:enter image description here防止腳本再次在php中運行

問題是,當我刷新頁面時,它會產生另一個鏈接。

我試圖header,但我想:

  1. 展現出獨特的下載鏈接
  2. 如果刷新頁面,重定向或echo 'Only one download per IP!

類似的東西。 代碼是

<?php 

//connect to the DB 
$resDB = mysql_connect("sql213.byethost10.com", "user", "pass"); 
mysql_select_db("Nice try", $resDB); 

function createKey() 
{ 
    //create a random key 
    $strKey = md5(microtime()); 

    //check to make sure this key isnt already in use 
    $resCheck = mysql_query("SELECT count(*) FROM downloads WHERE downloadkey = '{$strKey}' LIMIT 1"); 
    $arrCheck = mysql_fetch_assoc($resCheck); 
    if ($arrCheck['count(*)']){ 
     //key already in use 
     return createKey(); 
    } else { 
     //key is OK 
     return $strKey; 
    } 
} 

//get a unique download key 
$strKey = createKey(); 

//insert the download record into the database 
mysql_query("INSERT INTO downloads (downloadkey, file, expires) VALUES ('{$strKey}', 'fernanfloo-OMG.zip', '".(time()+(60*60*24*7))."')"); 

?> 

<html> 
<head> 
<title>Descargar Fernanfloo OMG sonido</title> 
</head> 
<h1>By Skyleter</h1> 
<p>Su link de descarga es:</p> 
<strong><a href="download.php?key=<?=$strKey;?>">download.php?key=<?=$strKey;?></a></strong> 
<p>Link caduca en 7 días..</p> 
</html> 

PS:header的工作,但正如我所說的,我想展現出獨特的下載鏈接,且僅當用戶在刷新頁面重定向。 (每次重定向到一個頁面)

回答

1
<?php 
    //Get client ip. 

    $ip = "203.146.92.56"; 

    $d = file_get_contents("ips.txt"); 
    $d = explode(",",$d); 

    if(in_array($ip,$d)) 
    { 
     echo "Only one download per ip"; 
    } 
    else 
    { 
     //display download link 
     fwrite(fopen('ips.txt','a'),$ip.","); 
    } 

ip.txt看起來像這樣

203.146.92.56,117.56.34.21,

需要注意的是,這只是在做你需要的基本方式。你可以調整很多。說個別用戶的個人文件,以便您可以每X個時間段清除X ip的日誌等等。也許甚至不同的日誌文件不同。

+0

哦,謝謝!我將在明天嘗試:D,同樣在'$ ip =「203.146.92.56」;',203.146.92.56 <是一個例子no?我需要用其他東西替換該IP或將其留空? – Skyleter

+1

這是一個例子,你需要用用戶的IP地址替換它。 –

0

我認爲你需要調查控制連接客戶端的會話。 會話參數將能夠用於防止生成新的密鑰。

+0

一個會話將工作......除非他擔心用戶關閉瀏覽器,重新打開它,然後回來再次下載。 – Terminus

+0

在這種情況下,他需要做一些更持久的事情......比如餅乾。 –