2016-01-10 2 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 работал, но, как я сказал, я хочу, чтобы показать уникальную ссылку для скачивания, и только если пользователь ОБНОВЛ PAGE, перенаправлять. (и каждый раз перенаправление на страницу)

ответ

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 ip каждый X период времени и так далее. Возможно, даже разные журналы для разных файлов.

+0

О, спасибо! Я попробую это завтра: D, также, в '$ ip =" 203.146.92.56 ";', 203.146.92.56 <- пример нет? Мне нужно заменить этот ip на что-нибудь еще или оставить его пустым? – Skyleter

+1

Это пример, вам нужно будет заменить его на ip-адрес пользователя. –

0

Я думаю, вам нужно исследовать контрольные сеансы для ваших подключающихся клиентов. Параметр сеанса будет использоваться для предотвращения генерирования новых ключей.

+0

сеанс будет работать ... если он не беспокоится о том, что пользователь закрывает браузер, открывая его, а затем возвращается к другой загрузке. – Terminus

+0

В этом случае ему нужно будет сделать что-то более стойкое ... как куки. –

Смежные вопросы