Autor Zpráva
Barbar_cz
Profil *
Řeším následující situaci - potřebuji, aby lidé, jimž pošlu e-mail si mohli stáhnout eBook (v několika formátech a zabelený do souboru ebook.zip). Jenže chci, aby si ho každý uživatel mohl stáhnout jen jednou (max. dvakrát).

Ideálně bych potřeboval nějaký script, který by mi generoval unikátní odkazy (např. http://web.cz/download?=54sdd45d45sd4ds45sd) a při kliknutí na tento odkaz by skript vydal uživateli požadovaný sobor (např. ebook.zip), ale při pokusu použít odkaz podruhé, by vrátil jenom chybu nebo hlášku "Stažení už bylo využito".

Každému uživateli bych pak mohl e-mailem poslat "jeho" odkaz a měl bych jistotu, že soubor tak nebude veřejný pro všechny a že ani uživatel nemůže svůj odkaz nikomu předávat :-).

Jde to nějak vyřešit? Prosím, kdyžtak mi pošlete link na nějaký příklad, kde se něco podobného řeší. Děkuji za každou radu!
okolojdouci
Profil *
Při vytváření těch mailů si generuj unikátní řetězce, ze kterých složíš odkaz v tom tvaru, jak píšeš a zároveň ten řetězec uložíš do tabulky v databázi. Při otevření toho linku pak ze souboru download.php (normální php soubor) ověř, jestli řádek s tím řetězcem existuje, smaž ten řádek v tabulce a pomocí header ( "Location: web.cz/soubor.zip") odkaž na soubor. Pro prohlížeč ten odkaz zafunguje jako odkaz na zip soubor, tzn. otevře dialog pro uložení.
Aleš Janda
Profil
okolojdouci:
Přesně tak, akorát bez toho header("Location: web.cz/soubor.zip"). Skutečná adresa nesmí být přístupná z webu, protože by na ni někdo mohl odkázat a vyhnout se tak kontrole. Pošli správný Content-Type a obsah přímo z ověřovacího skriptu.
okolojdouci
Profil *
Aleš Janda:
akorát bez toho header("Location: web.cz/soubor.zip").

Měl jsem za to, že tím přesměrováním se zařídí, že skutečná adresa souboru známa nebude, protože jako zdroj dat se bude tvářit ten php soubor s parametrem. Ale je pravda, že varianta s odesláním hlavičky a obsahu datového souboru je jen o pár řádků delší a za tu cenu je asi výrazně odolnější proti šťouralům.
Tori
Profil
Když jste u tohoto tématu - dá se nějak zjistit, jestli se soubor odeslal celý, resp. jestli uživatel nezrušil stahování?
Rellik
Profil
Barbar_cz:
uživatel nemůže svůj odkaz nikomu předávat
Ale stažený soubor pak může poslat komu chce? Myslím že řešíš něco co je úplně zbytečné...
Barbar_cz
Profil *
Rellik: No z právního hlediska, když někomu předá už stažený soubor, tak je to "porušování autorského práva a práv k databázi", které se dá potrestat propadnutím věci, zákazem činnosti, pokutou až 5 milionů korun a odnětím svobody.

Pokud mám přes jakýkoliv link veřejně dostupný soubor ke stažení, tak je ten soubor poskytnutý "veřejně", tímpádem, když ho někomu někdo pošle (ať už samotný soubor nebo link) nezpůsobí tím žádnou škodu, protože soubor je už "veřejně přístupný" i tak :-).

--

Tím neříkám, že bych po "pirátovi" požadoval nějaké miliony ve stylu BSA nebo OSA. Ale veřejné omluvě by se nevyhnul - jemu to nic neudělá a je to reklama zdarma :-).

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0