ugrás a tartalomhoz

Fájlok letöltés védelme csak regisztráltaknak

Liquid · 2005. Már. 29. (K), 02.23
Sziasztok!

Azt szeretném megtudni, hogy miként lehetséges egy Apache 2.0.53-as (Win32) webszerver esetén az egyes könyvtárakhoz a hozzáféréseket egy MySQL adatbázisban tárolt felhasználó és jelszó párosításokhoz kötni?

Nem szeretném ha a szerveren tárolt fájlokat valaki egy másik oldalon egyszerűen belinkelné, és ezáltal simán hozzáférhetővé válnának, hanem szükséges lenne az oldalra való regisztráció, s ez után a felhasználó egy letölthető fájl hozzáférésekor megadja az oldalon regisztrált login/jelszó párosát.

Miképpen lehet ezt eszközölni? Előre is köszi a segítséget!

Liquid
 
1

Több dolog

tiny · 2005. Már. 29. (K), 10.21
Szia!
Először is meg kéne nézned ezt a linket, ahol megtudhatod, hogyan tudsz MySQL adatbázist kezelni: php manual
Ezeknek az elsajátítása után egyszerű, ugyanis csak egy űrlapban bekéred az adatokat, s olyan nevet adsz az egyes objektumoknak, amik a programban lévő változók nevei lesznek.
Ha keresőkbe regisztrálsz, nézd meg, hogy a védett oldalaidat ne indexelje le. Ehhez google-ből tudsz leírásokat összevadászni, ha pedig csak egy link mutat a védett oldalra, akkor egy meta tag elég. Üdv:
Mr.Tiny :: MRT Site
2

Pontosítás

Liquid · 2005. Már. 29. (K), 18.49
OK, lehet, hogy nem voltam teljesen egyértelmű (vagy én nem értem amit Te mondasz, vagy elbeszélünk egymás mellett. :))

Nos a lényeg a következő:

A PHP és a MySQL közötti kommunikációval semmi gond, egy felhasználónevet és a hozzá tartozó jelszót simán le tudom kérdezni, ezek után már az összetartozás ellenőrzése könnyű feladat.

(Itt nem a link böngészőbe írásának lehetőségével volt a gond.)

A probléma ott kezdődik, hogy ha egy másik webldalról valaki simán belinkeli az egyik letöltésemet, akkor azonnal mindenki számára elérhetővé válik.

Viszont rájöttem valamire:

Mivel az Apache webszerverek .htaccess fájlok alapján lezelik a jogosultságokat, a PHP pedig képes a szerveren különféle fájlok létrehozására, ezért valószínű az lesz a megoldás, hogy minden egyes újonnan regisztrált felhasználó esetén újra kell majd írni a könyvtár .htaccess fájlját, másképpen az új felhasználók nem férnek hozzá a letölthető fájlokhoz.

Vélemény vagy jobb ötlet?

Liquid [Eclipse]
3

Persze, jó irányban

virág · 2005. Már. 29. (K), 19.07
Persze, jó irányban tapogatózol, ha körbenézel a neten sok olyan osztályt, példát stb. találsz amiből kilesheted hogyan kell. Pl.: http://www.zend.com/codex.php?id=521&single=1
4

A letöltésre kinált

Gy_ · 2005. Már. 29. (K), 19.51
A letöltésre kinált állományokat tárold az adatbázisban, vagy pedig egy olyan könyvtárban ami a 'document root'-on kívül van.

Miután eldöntötted, hogy jogosult e látogató a fájl letöltésére, akkor kiszálgálod a kérését.
5

Fájlok tárolása MySQL adatbázisban

Liquid · 2005. Már. 30. (Sze), 01.20
Eltekintenék a nagyobb mérető (60MB+) fájlok MySQL adatbázisban való tárolásától, mivel így óriási méretű adatbázisok jönnének létre, továbbá a fájlok feltöltése is ezzel a módszerrel jelentősen komplikáltabb lenne.

Liquid [Eclipse]
6

60MB+

Gy_ · 2005. Már. 30. (Sze), 08.56
Nem tudtam, hogy ekkora méretű állományaid vannak. Viszont akkor marad az, hogy olyan könyvtárba teszed őket ami webről nem elérhető.
7

Más megoldás

tiny · 2005. Már. 30. (Sze), 15.29
Tényleg félreértettelek :). Nem volt egyértelmű, legalábbis nekem. Ha olyan könyvtárba teszi, akkor is elérik a lapján keresztül, nem? Szerintem a fájlok neveit el lehet tüntetni egy javascripttel. Az állapotsort módosítod, hogy oda ne írja ki, aztán meg egy rejtett beágyazott keretben (0 széles, 0magas) egy php kód leellenőrzi, hogy a felhasználó session_id-je igazi e (előre el kell tárolni pl egy fájlba), aztán ha az, akkor egy időzített javascripttel megindítja a letöltést. Szerintem... Ha valami hibája van, akkor írjatok! Üdv:
Mr.Tiny :: MRT Site
8

Pont az a lényeg, hogy csak

VBala · 2005. Már. 30. (Sze), 16.08
Pont az a lényeg, hogy csak a lapján keresztül érjék el. A javascriptes megoldás teljesen felesleges, mert kikapcsolt javascript, vagy keresőrobotok ellen nem véd. Az iframe meg felesleges bonyolítás.
A legjobb megoldás amit ismerek, a fájl kiszolgálása php-n keresztül: session ellenőrzés, azonosítás, aztán a megfelelő fejlécek küldése, és a fájl elküldése pl. readfile() vagy fpassthru() segítségével.
http://hu.php.net/manual/hu/function.header.php
http://hu.php.net/manual/hu/function.readfile.php
http://hu.php.net/manual/hu/function.fpassthru.php
9

Vagy nem

Anonymous · 2005. Május. 18. (Sze), 13.13
probálj meg létrehozni egy biztomsági kódot, mint a nuke rendszerekben talán az segít.