Защита на файл от сваляне

ma3x_ip

Registered
Здравейте:)
Някой можели да ми обясни какъв е принципа на тази функция:
Ще дам пример с rapidshare.com

Изчаквам времето излиза бутона за сваляне цъкам го пращаме в
Код:
http://rs118tl2.rapidshare.com/files/111590553/249269/_30_SimTractor.rar
и почва да сваля в рамките на 10 -15 секунди аз от друго пц с друго IP пробвам не може да се сваля файла след това докато го свалям пробвам
да го пусна на ново на моя комп и пак не става

как я правят тази защита ?
 
Ами всъщност е много просто. След изтичане на времето, добавяш в една таблица ip-то и id-то (на файла) и при натискането на бутона изтегли, препращаш към друг файл и там правиш проверка, дали ip-то на този потребител е изчакал да изтече времето за този файл и ако да му го даваш, ако не го пращаш пак да чака :D
 
gamena007 каза:
Ами всъщност е много просто. След изтичане на времето, добавяш в една таблица ip-то и id-то (на файла) и при натискането на бутона изтегли, препращаш към друг файл и там правиш проверка, дали ip-то на този потребител е изчакал да изтече времето за този файл и ако да му го даваш, ако не го пращаш пак да чака :D

можели малко код ?
За обяснение за не го разбрах?

Даже ако има няква така готова ситема да видя кода или нещо подбно :) :)
 
в html кода имаш един <div id="dl"></div>

По нагоре си декларираш следния JS Code:
Код:
function fc() {
    if(c>0){
        document.getElementById("dl").innerHTML = '<h3 style="font-size:24pt;" id="zeit"> ' + c + ' seconds remaining</h3>';
        c=c-1;        
        setTimeout("fc()", 1000);
    } else {
        var tt = '<form name="dlf" action="download.php" method="post">' +     
       '<input type="hidden" name="file" value="NOMER_NA_FAILA">' +
        '</div>' +
        '</td></tr></table><p><center><input type=image src="/img2/download_file.jpg" /></center>' +
        '</p></form>';
        document.getElementById("dl").innerHTML = tt;
    }
}
var c=29; // времето което се чака в секунди          
if (window.location.hash == "#dlt")
    c = 0;
window.onload = fc;

Предварително в тази страница си добавяш ip-to на потребителя в една страница заедно с номера на файла и датата + часа.

В download.php проверяваш дали има запис на това IP и този файл в бд и ако е минало времето (Проверяваш записаното време с момента на поискване на файла) подаваш файла и триеш записа от БД. Може да сложиш и една проверка да не са минали повече от 5 мин и да триеш записа.
 
gamena007 каза:
в html кода имаш един <div id="dl"></div>

По нагоре си декларираш следния JS Code:
Код:
function fc() {
    if(c>0){
        document.getElementById("dl").innerHTML = '<h3 style="font-size:24pt;" id="zeit"> ' + c + ' seconds remaining</h3>';
        c=c-1;        
        setTimeout("fc()", 1000);
    } else {
        var tt = '<form name="dlf" action="download.php" method="post">' +     
       '<input type="hidden" name="file" value="NOMER_NA_FAILA">' +
        '</div>' +
        '</td></tr></table><p><center><input type=image src="/img2/download_file.jpg" /></center>' +
        '</p></form>';
        document.getElementById("dl").innerHTML = tt;
    }
}
var c=29; // времето което се чака в секунди          
if (window.location.hash == "#dlt")
    c = 0;
window.onload = fc;

Предварително в тази страница си добавяш ip-to на потребителя в една страница заедно с номера на файла и датата + часа.

В download.php проверяваш дали има запис на това IP и този файл в бд и ако е минало времето (Проверяваш записаното време с момента на поискване на файла) подаваш файла и триеш записа от БД. Може да сложиш и една проверка да не са минали повече от 5 мин и да триеш записа.


Опа известно време нямах достап до интернет :(

Да това го разбрах.
В файла download.php проверката също знам как ще стане но, когато е го има в бД когато му е позволено да сваля.
Можели да обясни малко и тази част


Код:
........... и стигаме до проверката
if (..........){
//Няпа право да сваля

}   
else{
//Свали файла
//Сега тука да речем ми дава линк http://domein.com/file/23534.zip
//Аз го свалям файла но вече знам мястото на файла като въведа горе в url на друк браузер след 1 час (нали вече знам файла като кликна така  нямали да почне да сваля)
}
 
Момци нещата не стават така както ги мислите ;)

Работата е на малко по-високо ниво.
Първо този линк генериран от рапидшер е съвсем произволен и е само за едно изтегляне (:

След това изчезва вовеки ;) Всеки път се генерира нов код, когато искате да изтеглите един и същ файл. Тука има яко писан софт. Да не говорим че този софт има доста повече функции. Като ограниение на скорост, и пр...

Единственото което има общо е ип-то че се записва (:
Но освен това има и бисквитка и т.н...

А самия софт няма как да го дадем - той си е правен за Rapidshare и е компилиран за Linux(UNIX).
 
appmaster каза:
Момци нещата не стават така както ги мислите ;)

Работата е на малко по-високо ниво.
Първо този линк генериран от рапидшер е съвсем произволен и е само за едно изтегляне (:

След това изчезва вовеки ;) Всеки път се генерира нов код, когато искате да изтеглите един и същ файл. Тука има яко писан софт. Да не говорим че този софт има доста повече функции. Като ограниение на скорост, и пр...

Единственото което има общо е ип-то че се записва (:
Но освен това има и бисквитка и т.н...

А самия софт няма как да го дадем - той си е правен за Rapidshare и е компилиран за Linux(UNIX).

Точно това с уникалноста на линка имах предвит :) и то само за 1 пат :)
ще имали разяснения как ще стане ?

Като цяло идеята не ми е тама но исках да науча принципа :)
Основната идея е не да се чака веме а файла да може да се сваля от само регистирани потребители
 
Пренасочваш към .php файл. В него:

Код:
<?php

if(ne_e_4akal) {
header("HTTP/1.0 404 Not Found");
die();
} // дали е чакал

header ("Accept-Ranges: bytes");
header ("Connection: close");
header ("Content-Transfer-Encoding: binary");
header ("Content-Disposition: attachment; filename=\"".$name."\"");
header ("Content-Type: $fileType");// Първо трябва да си го запаметил в бд. Пример: images/jpeg, application/pdf и т.н. - $_FILES['tvoqfail']['type']; 
ob_implicit_flush(true);

readfile($file); // $file - Целия път до файла

?>
 
gamena007 каза:
Пренасочваш към .php файл. В него:

Код:
<?php

if(ne_e_4akal) {
header("HTTP/1.0 404 Not Found");
die();
} // дали е чакал

header ("Accept-Ranges: bytes");
header ("Connection: close");
header ("Content-Transfer-Encoding: binary");
header ("Content-Disposition: attachment; filename="".$name.""");
header ("Content-Type: $fileType");// Първо трябва да си го запаметил в бд. Пример: images/jpeg, application/pdf и т.н. - $_FILES['tvoqfail']['type']; 
ob_implicit_flush(true);

readfile($file); // $file - Целия път до файла

?>


За архивите какво да пиша като(zip,rar,7z) ?
 

Back
Горе