login  Naam:   Wachtwoord: 
Registreer je!
 Scripts:

Scripts > PHP > Beveiliging > Bescherm je afbeeldingen tegen kopieren

Bescherm je afbeeldingen tegen kopieren

Auteur: wes - 30 december 2007 - 18:37 - Gekeurd door: Stijn - Hits: 8078 - Aantal punten: (0 stemmen)





Met dit script kun je makkelijk je afbeeldingen beschermen tegen kopieren, je kunt bijv. zorgen dat mensen eerst in moeten loggen voordat ze het te zien krijgen.

Ik gebruik de map /img dus daarom heb ik $bestand = "img/".$_GET['bestand']; gedaan, dat kun je natuurlijk zelf ook veranderen naar een andere map...

Als je het php bestand img.php of zoiets noemt dan kun je je plaatjes zo erin zetten:

<img src="img.php?bestand=blaat.jpg">

Ik zal er maar niet zo'n lang verhaal aan breien, dus hier de code:

Code:
  1. <?php
  2.  
  3. function foutmelding($fout) {
  4. header("content-type: image/png");
  5.  
  6. switch ($fout) { // Kijken voor welke foutmelding hij moet weergeven en hoe groot de foutmeldings-afbeelding moet zijn
  7. case 1:
  8. $img = ImageCreate(208, 15);
  9. $tekst = "Er is geen bestandsnaam opgegeven!";
  10. break;
  11.  
  12. case 2:
  13. $img = ImageCreate(270, 15);
  14. $tekst = "Er zitten verkeerde tekens in de bestandsnaam";
  15. break;
  16.  
  17. case 3:
  18. $img = ImageCreate(150, 15);
  19. $tekst = "Het bestand bestaat niet";
  20. break;
  21.  
  22. case 4:
  23. $img = ImageCreate(200, 15);
  24. $tekst = "Er is een fatale fout opgetreden";
  25. /*
  26.   Als je deze fout tegenkomt, controleer dan of je plaatje goed leesbaar is (dus ook op je p.c zelf proberen te bekijken), en kijk of er hoofdletters in zitten. Soms ligt het daaraan... Als je het daarna tegenkomt zou ik niet weten wat er mis is (sorry)
  27.   */
  28. break;
  29. }
  30.  
  31. $achtergrond = ImageColorAllocate($img, 255, 255, 255); // Witte achtergrond
  32. $size = 2; // Grootte lettertype
  33. $color = ImageColorAllocate($img, 255, 0, 0); //Rode tekstkleur
  34.  
  35. ImageString($img, $size, 0, 0, $tekst, $color);
  36. ImagePng($img);
  37. ImageDestroy($img);
  38. }
  39.  
  40. if(!$_GET['bestand']) { // Als er geen bestandsnaam is opgegeven
  41. foutmelding(1);
  42. exit();
  43. }
  44.  
  45. $bestand = "img/".$_GET['bestand']; // Geeft aan waar het bestand zich moet bevinden, let op, NOOIT in dezelfde map!!
  46. // verander img/ naar jouw_map/
  47.  
  48. if(!preg_match("/^([\w_-]+)(\.[\w_-]+)*(\/[^ \.\?]+(\.[^ \.\?]+)*)*(\/)?$/i", $_GET['bestand'])) { // Controleren of er verkeerde tekens in zitten
  49. foutmelding(2);
  50. exit();
  51. }elseif(!file_exists($bestand)) { // Controleren of het bestand wel bestaat
  52. foutmelding(3);
  53. exit();
  54. }
  55.  
  56. $open = fopen($bestand, "rb");
  57. $imgsize = getimagesize($bestand);
  58.  
  59. if($imgsize && $open) {
  60. header("Content-type: {$imgsize['mime']}"); // Geeft de header
  61. fpassthru($open); // geeft de afbeelding weer
  62. exit();
  63. }else{
  64. echo foutmelding(4);
  65. }
  66.  
  67. ?>


in de map met de plaatjes zet je dan een .htaccess bestand met daarin:

  1. order deny,allow
  2. deny from all
Download code! Download code (.txt)

 Stemmen
Niet ingelogd.

 Reacties
Post een reactie
Lees de reacties (13)
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.025s