Letöltési link rejtése

Amennyiben szeretnél, olyan letöltési oldalt csinálni, amelyen a fájlokat csak adott linkről lehet elérni, és szeretnéd, hogy direkt linkek ne kerüljenek ki akkor íme egy jó megoldás.
A történethez nem lesz másra szükségünk csak egy kis .htaccess fájl módosításra és egy egyszerű php scriptre, amely a linkjeinkből elő csalogatja a fájlt.

Példa képen hozzunk létre egy letoltes mappát az FTP-nken és rakjunk bele egy hello.pdf fájlt. Ezt alapesetben a http://www.mydomain.hu/letoltes/hello.pdf címen el is érhetjük, és ezt bárki más is letöltheti anélkül, hogy mi megtudnánk.

Első lépésként hozzunk létre az FT-nken abba a mappába, amit tiltani szeretnénk egy .htaccess nevű fájlt. Igen ezt Windows alatt nehezen hozzuk, létre használjunk TotalCommander-t. Miután megvan, a fájl adjuk bele ezt a pár sort:


order deny,allow
deny from all

Ezzel elértük azt, hogy a http://www.mydomain.hu/letoltes/hello.pdf ne lehessen letölthető ilyen linkel, hanem a szerver egy hibát dob vissza. Mivel ez megvan most már csak nekünk kéne valahogy hozzáférni a fájlokhoz. Erre a legegyszerűbb megoldás, ha már előre megírt alkalmazásokat túrunk elő a netről, bár nem nagy kaland összedobni egyet, most mégis válasszuk a kevésbé rögös de sokkal kényelmesebb útvonalat. Fogjuk a Zobrag.com által írt letöltő php scriptet, amiben egy nagyon gyors konfigolást fogunk majd végezni.

Letöltés

A konfigolás első szakaszában meg kell adnunk, hogy hol is vannak a fájlok a szerveren. Ha ezt nem tudjuk, akkor az index-ben echo „$_SERVER[DOCUMENT_ROOT]"; paranccsal hamar kideríthetünk. Egy szép kis könyvtárszerkezetet kapunk vissza, amit a letöltött majd feltöltött download.php-ban meg kell adni így:


define('BASE_DIR','/home/user/downloads/');


A scriptben azt is megadhatjuk, hogy például csak a mi domainünkről érkező hívást fogadja el, vagyis a linknek tartalmaznia kell a mydomain.hu címet, ezt a következőképpen adhatjuk meg:


define('ALLOWED_REFERRER', 'mydomain.hu');


Ha ezzel is megvagyunk gyakorlatilag már készen is lennénk a script bekonfigurálásával így tehát máris hivatkozhatunk a következő formában:


Klikk ide a letöltéshez


Ennyi lenne tehát a trükk, ha ezzel megvagyunk, innentől már csak a képzeletünk szabhat határt annak, hogy miként is tiltsuk ki az illetékteleneket a fájljainkról és a direkt linkelőktől. Mivel egy php script így könnyen összecsatolható adatbázissal, tehát számolhatjuk a letöltések számát (a script alapból egy log-ba menti is a letöltéseket amúgy), de lehetőségünk nyílik arra hogy csak regisztrált felhasználók férhessenek a fájlokhoz sőt, ha nem akarjuk a linkbe a fájl nevét se belerakni, akkor végezzünk egy egyszerű trükköt, adatbázis + php kombóval

  1. A linket cseréljük erre: http://mydomain.hu/download.php?f=1 , ahol 1 a fájl ID-jét jelenti, amit le akarunk tölteni
  2. A download.php-ben az adatbázishoz csatlakozás után adjunk ki egy parancsot:
  3. $querry=" SELECT* FROM fajlok_tablaja WHERE ID=$_GET[f]";
    $sql=mysql_query($querry);
    $row=mysql_fetch_array($sql);

  4. $_GET[f]=$row[FILENAME] ahol a FILENAME az adatbázisban eltárolt 1-es ID-hez tartozó fájl fizikai neve.
  5. Így máris ID-ből fájl nevünk lett a program pedig tudja, de más nem annyira.


Ezen felül persze mindenféle kódokat is generálhatunk sessionokat, vagy amit csak akarunk ez az út eleje, hogy egy korrekt fájl letöltőt hozzunk össze, reméljük hasznos volt. A kérdéseket a hozzászólásokba várjuk, ha van.

Letöltési link rejtése

#totalstudio