login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Hotlinken tegen gaan

Offline zwobbel - 01/01/2007 17:24
Avatar van zwobbelPHP gevorderde Hallo,

Ik ben bezig met een download website.
Maar ik vraag me af hoe je hotlinking kan tegen gaan?
Dit moet van mij niet percee in php maar mag ook in htacces ofzo?
Iemand enig ide hoe men dit kan doen?

15 antwoorden

Gesponsorde links
Offline svm - 01/01/2007 17:26
Avatar van svm PHP ver gevorderde Kijk ook eens bij de tutorials:
http://www.site...d=108#urls

Met .htaccess dus.
Offline ikkedikke - 01/01/2007 17:57
Avatar van ikkedikke PHP expert dit is niet waterdicht. je kan ook met sessies werken:
dat een bezoeker minimaal 2 hits moet hebben waarvan 1 gewoon een pagina is en de 2e pas de downloadpagina.
Offline zwobbel - 01/01/2007 18:38
Avatar van zwobbel PHP gevorderde hoe doe je dat dan ikkedikke?
Offline vinTage - 01/01/2007 23:37
Avatar van vinTage Nieuw lid Met wat ikkedikke oppert kan je alleen het hotlinken van je downloadpagina tegengaan, maar niet de bestanden imo.
Bij mijn weten kan dat alleen via htaccess
Offline ikkedikke - 02/01/2007 09:50 (laatste wijziging 02/01/2007 09:58)
Avatar van ikkedikke PHP expert dat is dus niet waar.
je neemt de volgende mappenstructuur:
  1. /www/
  2. +/downloadmappen/
  3. +bestand1
  4. +bestand2
  5. +.htaccess
  6. +index.php

in htacces zet je iets in de richting van het volgende:
  1. order allow,deny
  2. deny from all
  3. statisfy all


in de index zet je zoiets:
  1. <?
  2. if(isset($_SESSION['sIp']) && $_SESSION['sIp'] == $_SERVER['REMOTE_ADDR'] && isset($_GET['get']))
  3. {
  4. header('Content-type: '.mime_content_type($_SESSION['sFile']));
  5. header("Content-Disposition: attachment; filename=".rawurlencode(basename($_SESSION['sFile'])) );
  6. header("Content-Length: ".filesize($_SESSION['sFile'] ) );
  7. readfile($_SESSION['sFile']);
  8. $_SESSION = array();
  9. }
  10. elseif(isset($_GET['file']))
  11. {
  12. if(file_exists(dirname(__FILE__).'/downloadmappen/'.basename($_GET['file'])) && $_GET['file'] != '.htaccess')
  13. {
  14. $_SESSION['sIp'] = $_SERVER['REMOTE_ADDR'];
  15. $_SESSION['sFile'] = dirname(__FILE__).'/downloadmappen/'.basename($_GET['file']);
  16. echo '<a href="/?get">download</a>';
  17. }
  18. }
  19. ?>
Offline zwobbel - 03/01/2007 15:48
Avatar van zwobbel PHP gevorderde Heb gedaan zoals je zei maar als ik nu een file oproep zoals volgt:

index.php?file=movie.avi

gebeurt er niets wat doe ik verkeerd?
Offline elecomte - 03/01/2007 16:48
Avatar van elecomte Grafische interesse ik kan via mijn cpannel hotlinking tegengaan aanzetten.
:)
Offline zwobbel - 03/01/2007 17:02
Avatar van zwobbel PHP gevorderde Ja, waarben ik hiermee nu verder geholpe?
Nergens dus zeg dan lievers niets?!
Offline Wim - 03/01/2007 17:10
Avatar van Wim Crew algemeen ikkedikke waar staat __FILE__ voor? Anders moet je (zwobbel) het path naar de downloads is aanpassen, zonder die dirname(__FILE__)?

Maybe it'll work..!
Offline zwobbel - 03/01/2007 21:51
Avatar van zwobbel PHP gevorderde Nope still nt working *snik*
Offline ikkedikke - 04/01/2007 01:53
Avatar van ikkedikke PHP expert __FILE__ is een constante met het absolute pad naar het bestand dat nu uitgevoerd wordt.
Heeft zwobbel al goed gekeken naar de mappen ed waar het in moet staan? het gaat om het principe, misschien moet je wat namen oid aanpassen.
Offline vinTage - 04/01/2007 02:05
Avatar van vinTage Nieuw lid @ikkedikke
Snap ik je voorbeeldje niet, of gebruik je gewoon htaccess om het hotlinken tegen te gaan ?

eens het pad bekend is, maakt de rest toch niemeer uit ?

Offline zwobbel - 04/01/2007 10:35
Avatar van zwobbel PHP gevorderde Idd zoals vintage ook zei eens het pad bekend is heeft het geen nut meer ...
Offline Gerard - 04/01/2007 17:08
Avatar van Gerard Ouwe rakker Maarten (Murfy) heeft een keer een oplossing geïntegreerd voor dit op 1 van mijn eigen website. Hij maakte gebruik van de combinatie htaccess en php om het te bewerkstelligen, precies zoals het eerder hierboven al is aangeven.

Met htaccess zorg je ervoor dat de directory waar de bestanden instaan niet toegankelijk is via een browser. Daarna serveer je alle files gewoon met php.

  1. <?php
  2. header('Content-Type: application/force-download');
  3. header('Content-Length: '.filesize($file));
  4. header('Content-Disposition: attachment; filename="'.mysql_result($qFile,0).'"');
  5.  
  6. $fd = fopen($file,$read);
  7. while(!feof($fd)) {
  8. echo fread($fd, 4096);
  9. }


Dat was de code die wij gebruikte om de bestanden te laten downloaden. We hebben getest met bestanden van 700MB en dit ging gewoon goed.
Offline ikkedikke - 04/01/2007 17:23
Avatar van ikkedikke PHP expert ik gebruik inderdaad .htaccess. Maar waar dat andere principe van uit gaat is de referer, die is te faken. Ik zorg er gewoon voor dat iemand eerst op een link moet klikken op jouw website voor het bestand te downloaden is.
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.219s