| 
                 
            
            
                    
            
             
                 
                
                 
		
                    
                    
                    Bescherm je afbeeldingen tegen kopieren
                    
                    Auteur: wes - 30 december 2007 - 18:37 - Gekeurd door: Stijn - Hits: 8371  - 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: | 
                     
                    
                    
                    
    
    
        
            
                <?php
ob_start();
function foutmelding($fout) {
header("content-type: image/png"); 
switch ($fout) { // Kijken voor welke foutmelding hij moet weergeven en hoe groot de foutmeldings-afbeelding moet zijn
 case 1:
  $img = ImageCreate(208, 15);
  $tekst = "Er is geen bestandsnaam opgegeven!";
 break;
 
 case 2:
  $img = ImageCreate(270, 15);
  $tekst = "Er zitten verkeerde tekens in de bestandsnaam";
 break;
 
 case 3:
  $img = ImageCreate(150, 15);
  $tekst = "Het bestand bestaat niet";
 break;
 
 case 4:
  $img = ImageCreate(200, 15);
  $tekst = "Er is een fatale fout opgetreden";
  /*
  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)
  */
 break;
}
$achtergrond = ImageColorAllocate($img, 255, 255, 255); // Witte achtergrond
$size = 2; // Grootte lettertype
$color = ImageColorAllocate($img, 255, 0, 0); //Rode tekstkleur
ImageString($img, $size, 0, 0, $tekst, $color);
ImagePng($img);
ImageDestroy($img);
}
if(!$_GET['bestand']) { // Als er geen bestandsnaam is opgegeven
 foutmelding(1);
 exit();
}
$bestand = "img/".$_GET['bestand']; // Geeft aan waar het bestand zich moet bevinden, let op, NOOIT in dezelfde map!!
// verander img/ naar jouw_map/
if(!preg_match("/^([\w_-]+)(\.[\w_-]+)*(\/[^ \.\?]+(\.[^ \.\?]+)*)*(\/)?$/i", $_GET['bestand'])) { // Controleren of er verkeerde tekens in zitten
 foutmelding(2);
 exit();
}elseif(!file_exists($bestand)) { // Controleren of het bestand wel bestaat
 foutmelding(3);
exit();
}
$open = fopen($bestand, "rb");
$imgsize = getimagesize($bestand);
if($imgsize && $open) {
 header("Content-type: {$imgsize['mime']}"); // Geeft de header
 fpassthru($open); // geeft de afbeelding weer
 exit();
}else{
 echo foutmelding(4);
}
?>
             
            <?php   function foutmelding($fout) { header("content-type: image/png");    switch ($fout) { // Kijken voor welke foutmelding hij moet weergeven en hoe groot de foutmeldings-afbeelding moet zijn  case 1:   $img = ImageCreate(208, 15);   $tekst = "Er is geen bestandsnaam opgegeven!";  break;    case 2:   $img = ImageCreate(270, 15);   $tekst = "Er zitten verkeerde tekens in de bestandsnaam";  break;    case 3:   $img = ImageCreate(150, 15);   $tekst = "Het bestand bestaat niet";  break;    case 4:   $img = ImageCreate(200, 15);   $tekst = "Er is een fatale fout opgetreden";   /*   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)   */  break; }   $achtergrond = ImageColorAllocate($img, 255, 255, 255); // Witte achtergrond $size = 2; // Grootte lettertype $color = ImageColorAllocate($img, 255, 0, 0); //Rode tekstkleur   ImageString($img, $size, 0, 0, $tekst, $color); ImagePng($img); ImageDestroy($img); }   if(!$_GET['bestand']) { // Als er geen bestandsnaam is opgegeven  foutmelding(1); }   $bestand = "img/".$_GET['bestand']; // Geeft aan waar het bestand zich moet bevinden, let op, NOOIT in dezelfde map!! // verander img/ naar jouw_map/   if(!preg_match("/^([\w_-]+)(\.[\w_-]+)*(\/[^ \.\?]+(\.[^ \.\?]+)*)*(\/)?$/i", $_GET['bestand'])) { // Controleren of er verkeerde tekens in zitten  foutmelding(2); }elseif(!file_exists($bestand)) { // Controleren of het bestand wel bestaat  foutmelding(3); }   $open = fopen($bestand, "rb");   if($imgsize && $open) {  header("Content-type: {$imgsize['mime']}"); // Geeft de header  fpassthru($open); // geeft de afbeelding weer }else{ }   ?> 
 
  
         
          
     
  
 
in de map met de plaatjes zet je dan een .htaccess bestand met daarin: 
 
    
    
        
            
                
order deny,allow
deny from all 
             
            order deny,allow
 deny from all 
 
  
         
          
     
   Download code (.txt)
                     | 
                     
                 
                 
                
                
            
            
                    
            
                              | 
            
                
                  Stemmen | 
                 
                
                | Niet ingelogd. | 
                 
             
             
            
             |