Empêchez la copie des images Coppermine Empêchez la copie des images Coppermine
 

News:

cpg1.5.48 Security release - upgrade mandatory!
The Coppermine development team is releasing a security update for Coppermine in order to counter a recently discovered vulnerability. It is important that all users who run version cpg1.5.46 or older update to this latest version as soon as possible.
[more]

Main Menu

Empêchez la copie des images Coppermine

Started by Doggy, August 29, 2006, 09:30:05 AM

Previous topic - Next topic

0 Members and 2 Guests are viewing this topic.

Doggy

Bonjour, auriez-vous des astuces pour empecher la copie des images coppermines?

Exemple: bloquer le clic droit etc.

Pascal YAP

#1
Bonjour Doggy,

Il existe une petite modif OVERLAY by Stramm.
Notez toutefois que le click droit n'est pas annulé simplement parce que beaucoup d'internautes utilisent le click droit pour autre chose que de la copie d'images.
Ce MOD place une image transparente au-dessus de vos images intermédiares et grand format (Overlay)

1/ Copiez le code suivant dans votre fichier theme.php
  ou enregistrez-le sur votre DD


function theme_html_picture()
{
    global $CONFIG, $CURRENT_PIC_DATA, $CURRENT_ALBUM_DATA, $USER;
    global $album, $comment_date_fmt, $template_display_media;
    global $lang_display_image_php, $lang_picinfo;

    $pid = $CURRENT_PIC_DATA['pid'];
    $pic_title = '';

    if (!isset($USER['liv']) || !is_array($USER['liv'])) {
        $USER['liv'] = array();
    }
    // Add 1 to hit counter
    if (!USER_IS_ADMIN && !in_array($pid, $USER['liv']) && isset($_COOKIE[$CONFIG['cookie_name'] . '_data'])) {
        add_hit($pid);
        if (count($USER['liv']) > 4) array_shift($USER['liv']);
        array_push($USER['liv'], $pid);
    }

    if($CONFIG['thumb_use']=='ht' && $CURRENT_PIC_DATA['pheight'] > $CONFIG['picture_width'] ){ // The wierd comparision is because only picture_width is stored
      $condition = true;
    }elseif($CONFIG['thumb_use']=='wd' && $CURRENT_PIC_DATA['pwidth'] > $CONFIG['picture_width']){
      $condition = true;
    }elseif($CONFIG['thumb_use']=='any' && max($CURRENT_PIC_DATA['pwidth'], $CURRENT_PIC_DATA['pheight']) > $CONFIG['picture_width']){
      $condition = true;
    }else{
     $condition = false;
    }

    if ($CURRENT_PIC_DATA['title'] != '') {
        $pic_title .= $CURRENT_PIC_DATA['title'] . "\n";
    }
    if ($CURRENT_PIC_DATA['caption'] != '') {
        $pic_title .= $CURRENT_PIC_DATA['caption'] . "\n";
    }
    if ($CURRENT_PIC_DATA['keywords'] != '') {
        $pic_title .= $lang_picinfo['Keywords'] . ": " . $CURRENT_PIC_DATA['keywords'];
    }

    if (!$CURRENT_PIC_DATA['title'] && !$CURRENT_PIC_DATA['caption']) {
        template_extract_block($template_display_media, 'img_desc');
    } else {
        if (!$CURRENT_PIC_DATA['title']) {
            template_extract_block($template_display_media, 'title');
        }
        if (!$CURRENT_PIC_DATA['caption']) {
            template_extract_block($template_display_media, 'caption');
        }
    }

    $CURRENT_PIC_DATA['menu'] = html_picture_menu(); //((USER_ADMIN_MODE && $CURRENT_ALBUM_DATA['category'] == FIRST_USER_CAT + USER_ID) || ($CONFIG['users_can_edit_pics'] && $CURRENT_PIC_DATA['owner_id'] == USER_ID && USER_ID != 0) || GALLERY_ADMIN_MODE) ? html_picture_menu($pid) : '';

    if ($CONFIG['make_intermediate'] && $condition ) {
        $picture_url = get_pic_url($CURRENT_PIC_DATA, 'normal');
    } else {
        $picture_url = get_pic_url($CURRENT_PIC_DATA, 'fullsize');
    }

    $image_size = compute_img_size($CURRENT_PIC_DATA['pwidth'], $CURRENT_PIC_DATA['pheight'], $CONFIG['picture_width']);

    $pic_title = '';
    $mime_content = cpg_get_type($CURRENT_PIC_DATA['filename']);


    if ($mime_content['content']=='movie' || $mime_content['content']=='audio') {

        if ($CURRENT_PIC_DATA['pwidth']==0 || $CURRENT_PIC_DATA['pheight']==0) {
            $CURRENT_PIC_DATA['pwidth']  = 320; // Default width

            // Set default height; if file is a movie
            if ($mime_content['content']=='movie') {
                $CURRENT_PIC_DATA['pheight'] = 240; // Default height
            }
        }

        $ctrl_offset['mov']=15;
        $ctrl_offset['wmv']=45;
        $ctrl_offset['swf']=0;
        $ctrl_offset['rm']=0;
        $ctrl_offset_default=45;
        $ctrl_height = (isset($ctrl_offset[$mime_content['extension']]))?($ctrl_offset[$mime_content['extension']]):$ctrl_offset_default;
        $image_size['whole']='width="'.$CURRENT_PIC_DATA['pwidth'].'" height="'.($CURRENT_PIC_DATA['pheight']+$ctrl_height).'"';
    }

    if ($mime_content['content']=='image') {
        if (isset($image_size['reduced'])) {
$imginfo=getimagesize($picture_url);
            $winsizeX = $CURRENT_PIC_DATA['pwidth']+5;  //the +'s are the mysterious FF and IE paddings
            $winsizeY = $CURRENT_PIC_DATA['pheight']+3; //the +'s are the mysterious FF and IE paddings
$pic_html = "<table cellpadding=0 cellspacing=0><tr><td background=\"" . $picture_url . "\" width={$imginfo[0]} height={$imginfo[1]} class=\"image\">";
            $pic_html .= "<a href=\"javascript:;\" onclick=\"MM_openBrWindow('displayimage.php?pid=$pid&amp;fullsize=1','" . uniqid(rand()) . "','scrollbars=yes,toolbar=no,status=no,resizable=yes,width=$winsizeX,height=$winsizeY')\">";
            $pic_title = $lang_display_image_php['view_fs'] . "\n==============\n" . $pic_title;
            $pic_html .= "<img src=\"images/overlay.gif\" width={$imginfo[0]} height={$imginfo[1]}  border=\"0\" alt=\"{$lang_display_image_php['view_fs']}\" /><br />";
            $pic_html .= "</a>\n </td></tr></table>";
        } else {
$pic_html = "<table cellpadding=0 cellspacing=0><tr><td background=\"" . $picture_url . "\" width={$CURRENT_PIC_DATA['pwidth']} height={$CURRENT_PIC_DATA['pheight']} class=\"image\">";
            $pic_html .= "<img src=\"images/overlay.gif\" {$image_size['geom']} hehe border=\"0\" alt=\"\" /><br />\n";
            $pic_html .= "</td></tr></table>";
}
    } elseif ($mime_content['content']=='document') {
        $pic_thumb_url = get_pic_url($CURRENT_PIC_DATA,'thumb');
        $pic_html = "<a href=\"{$picture_url}\" target=\"_blank\" class=\"document_link\"><img src=\"".$pic_thumb_url."\" border=\"0\" class=\"image\" /></a>\n<br />";
    } else {
        $autostart = ($CONFIG['media_autostart']) ? ('true'):('false');

        $players['WMP'] = array('id' => 'MediaPlayer',
                                'clsid' => 'classid="clsid:6BF52A52-394A-11D3-B153-00C04F79FAA6" ',
                                'codebase' => 'codebase="http://activex.microsoft.com/activex/controls/mplayer/en/nsmp2inf.cab#Version=5,1,52,701" ',
                                'mime' => 'type="application/x-mplayer2" ',
                               );
        $players['RMP'] = array('id' => 'RealPlayer',
                                'clsid' => 'classid="clsid:CFCDAA03-8BE4-11cf-B84B-0020AFBBCCFA" ',
                                'codebase' => '',
                                'mime' => 'type="audio/x-pn-realaudio-plugin" '
                               );
        $players['QT']  = array('id' => 'QuickTime',
                                'clsid' => 'classid="clsid:02BF25D5-8C17-4B23-BC80-D3488ABDDC6B" ',
                                'codebase' => 'codebase="http://www.apple.com/qtactivex/qtplugin.cab" ',
                                'mime' => 'type="video/x-quicktime" '
                               );
        $players['SWF'] = array('id' => 'SWFlash',
                                'clsid' => ' classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" ',
                                'codebase' => 'codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,0,0" ',
                                'mime' => 'type="application/x-shockwave-flash" '
                               );
        $players['UNK'] = array('id' => 'DefaultPlayer',
                                'clsid' => '',
                                'codebase' => '',
                                'mime' => ''
                               );

        if (isset($_COOKIE[$CONFIG['cookie_name'].'_'.$mime_content['extension'].'player'])) {
            $user_player = $_COOKIE[$CONFIG['cookie_name'].'_'.$mime_content['extension'].'player'];
        } else {
            $user_player = $mime_content['player'];
        }

                // There isn't a player selected or user wants client-side control
        if (!$user_player) {
            $user_player = 'UNK';
        }

        $player = $players[$user_player];

        $pic_html  = '<object id="'.$player['id'].'" '.$player['classid'].$player['codebase'].$player['mime'].$image_size['whole'].'>';
        $pic_html .= "<param name=\"autostart\" value=\"$autostart\" /><param name=\"src\" value=\"". $picture_url . "\" />";
        $pic_html .= '<embed '.$image_size['whole'].' src="'. $picture_url . '" autostart="'.$autostart.'" '.$player['mime'].'></embed>';
        $pic_html .= "</object><br />\n";
    }

    $CURRENT_PIC_DATA['html'] = $pic_html;
    $CURRENT_PIC_DATA['header'] = '';
    $CURRENT_PIC_DATA['footer'] = '';

    $CURRENT_PIC_DATA = CPGPluginAPI::filter('file_data',$CURRENT_PIC_DATA);

    $params = array('{CELL_HEIGHT}' => '100',
        '{IMAGE}' => $CURRENT_PIC_DATA['header'].$CURRENT_PIC_DATA['html'].$CURRENT_PIC_DATA['footer'],
        '{ADMIN_MENU}' => $CURRENT_PIC_DATA['menu'],
        '{TITLE}' => bb_decode($CURRENT_PIC_DATA['title']),
        '{CAPTION}' => bb_decode($CURRENT_PIC_DATA['caption']),
        );

    return template_eval($template_display_media, $params);
}

function theme_display_fullsize_pic()
{
    global $CONFIG, $THEME_DIR, $ALBUM_SET;
    global $lang_errors, $lang_fullsize_popup, $lang_charset;

    if (isset($_GET['picfile']))
    {
        if (!GALLERY_ADMIN_MODE) cpg_die(ERROR, $lang_errors['access_denied'], __FILE__, __LINE__);

    $picfile = $_GET['picfile'];
    $picname = $CONFIG['fullpath'] . $picfile;
    $imagesize = @getimagesize($picname);
    $imagedata = array('name' => $picfile, 'path' => path2url($picname), 'geometry' => $imagesize[3]);
    }
    elseif (isset($_GET['pid']))
    {
    $pid = (int)$_GET['pid'];
    $sql = "SELECT * " . "FROM {$CONFIG['TABLE_PICTURES']} " . "WHERE pid='$pid' $ALBUM_SET";
    $result = cpg_db_query($sql);

    if (!mysql_num_rows($result)) cpg_die(ERROR, $lang_errors['non_exist_ap'], __FILE__, __LINE__);

    $row = mysql_fetch_array($result);
    $pic_url = get_pic_url($row, 'fullsize');
    $geom = 'width="' . $row['pwidth'] . '" height="' . $row['pheight'] . '"';
    $imagedata = array('name' => $row['filename'], 'path' => $pic_url, 'geometry' => $geom);
    }

?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
  <head>
  <meta http-equiv="content-type" content="text/html; charset=<?php echo $CONFIG['charset'] == 'language file' $lang_charset $CONFIG['charset'?>" />
  <title><?php echo $CONFIG['gallery_name'?>: <?php echo $lang_fullsize_popup['click_to_close'];
      
?>
</title>
  <script type="text/javascript" src="scripts.js"></script>
  <style type="text/css">
  body { margin: 0; padding: 0; background-color: gray; }
  img { margin:0; padding:0; border:0; }
  #content { margin:0 auto; padding:0; border:0; }
  table { border:0; <?php $imagedata['geometry'?> border-collapse:collapse}
  td {         vertical-align: middle; text-align:center; }
  </style>
  </head>
  <body>
    <script language="JavaScript" type="text/JavaScript">
      adjust_popup();
    </script>
    <table cellpadding="0" cellspacing="0" align="center">
      <tr>
              <?php     
   echo "<td align=\"center\" valign=\"middle\" background=\"" htmlspecialchars($imagedata['path']) . "\" {$imagedata['geometry']} class=\"image\">";
echo "<div id=\"content\">";
   echo  '<a href="javascript: window.close()"><img src="images/overlay.gif" '
                
$imagedata['geometry']
                . 
' alt="'
                
htmlspecialchars($imagedata['name'])
                . 
'" title="'
                
htmlspecialchars($imagedata['name'])
                . 
"\n" $lang_fullsize_popup['click_to_close']
                . 
'" /></a><br />' ."\n";
               
?>

          </div>
        </td>
      </tr>
    </table>
  </body>
</html>
<?php
}


2/ Copiez cette image transparente qui se placera au-dessus de votre image à "protéger" lors de l'affichage.
Placez-la dans le dossiers Votre_CPG/images
Ainsi si un visiteur veut copier votre image, il copiera cette image transparente de 0ko ;D Mais il fera immédiatement une copie d'écran (print screen)
Ce MOD est une très faible protection. Mais souvenez-vous que si vous publiez des images sur le web, vous offrez de toutes façons la possibilité de les copier, n'est-ce-pas ?  ;)

Il existe d'autres choses que vous trouverez facilement en faisant une recherche avec les mot-clefs "No right Click" ou "Pas de click droit" !

PYAP

Doggy

Non mais c'est déjà pas mal, si le gars est obligé de faire des imprimes écrans, une photo ça va, mais pas une 100ene, ça va le fatiguer rapidement !

De toute façon il peut toujours uploader carrément le site, mais ça demande déjà plus de connaissance !

Avec un watermarker en plus ça sera fini.


Le code est à copier en dessous de quoi ? et Pour l'image faut la placer où?

Pascal YAP

QuoteLe code est à copier en dessous de quoi ?
Dans votre Theme.php (ou dans tous les theme.php que votre site proposent) juste avant la balise ?>
N'oubliez pas la traditionnelle sauvegarde de vos fichiers fonctionnels  ;)

QuotePour l'image faut la placer où?
Comme indiqué dans le premier post, dans le dossier images de votre Coppermine.

PYAP

Doggy


Pascal YAP


sanlogik

personnellement j'ai renoncé au watermark et à toute autre mesure de protection...
beaucoup d'emmer.... pour un résultat quoi qu'il arrive très limité  :(
Monsieur-tout-le-monde en fera pas commerce et un vrai pro contournera tout ça facilement, alors autant gagner (beaucoup) de temps et encore plus d'énergie, lol

maintenant plus il y aura de monde qui verra le site et moins l'intéret de copier les images à des fins commerciales sera grand puisque tout le monde y aura accès gratuitement ;)

Nicool

#7
Quote from: PYAP on August 29, 2006, 02:51:17 PM
Doggy,
Tentez une copie sur cette image et vous allez réussir  ;D


PYAP

Excusez mon intrusion, mais moi aussi je sui a la recherche d'un mod ou plugin, quui empecherait la copie d'image.
Mais a ce que je vois aucun moyen n'est assez securisant....et c'est bien dommage.

@PYAP : Je crois que c'est un peu depasser ca, avec les extensions de firefox on arrive a faire trop de choses, juge par toi meme :
(https://coppermine-gallery.com/forum/proxy.php?request=http%3A%2F%2Fimg101.imageshack.us%2Fimg101%2F5161%2Fimage2rj9.th.jpg&hash=afb464e194923cb8adedd8a182bb515f969e79df)


EDIT: si cette image te pose un problème, libre a toi de la virer.
[edit by PYAP]Pas de problème. J'avais noté : "vous allez réussir" !  ;D [/edit]

François Keller

@ Pyap: tel est pris qui croyait prendre  ;D ;D ;D
Avez vous lu la DOC ? la FAQ ? et cherché sur le forum avant de poster ?
Did you read the DOC ? the FAQ ? and search the board before posting ?
Mon Blog

Doggy

Quote from: PYAP on August 29, 2006, 02:51:17 PM
Doggy,
Tentez une copie sur cette image et vous allez réussir  ;D


PYAP

Bah ça dl le fichier overlay. Non c'est bien ce truc, ça protège suffisament, de toute façon la plus simple des solutions après ça, est de dl le ftp, et ça il ne faut pas avoir beaucoup de connaissance pour trouver et on ne peut pas l'empecher, donc c'est sur que ça sert a rien de chercher plus loin.

webmania

 ;) Bonjour à tous, je voulais juste dire que (OVERLAY by Stramm)
je l'ai inséré a la fin du fichier (themes.inc.php) situé dans le répertoire INCLUDE
et l'avantage c'est que si l'on change de thème, ca fonctionne...

Pascal YAP

Bonjour,
Quotejuste dire que (OVERLAY by Stramm)
je l'ai inséré a la fin du fichier (themes.inc.php) situé dans le répertoire INCLUDE
et l'avantage c'est que si l'on change de thème, ca fonctionne...
C'est votre choix, et il fonctionne comme signalé ci-dessus.
Comme signalé aussi,il faut autant que faire ce peut, éviter de toucher à THEME.INC.PHP.
Au moment d'une prochaine mise à jour de Coppermine, vous allez souffrir si vous avez commis de nombreuses modifs du code  ;)

PYAP

sanlogik

l'image transparente n'est plus disponible j'ai l'impression ;)

Pascal YAP

Sanlogic,

Quotel'image transparente n'est plus disponible j'ai l'impression
Quelle est la question ?   ?  ?

PYAP

sanlogik

oups désolé, c'est vrai que ce n'était pas très clair, lol

Quote from: PYAP on August 29, 2006, 10:33:30 AM
2/ Copiez cette image transparente qui se placera au-dessus de votre image à "protéger" lors de l'affichage.
Placez-la dans le dossiers Votre_CPG/images

PYAP

ce lien-ci ne renvoit plus vers rien, donc impossible de se procurer cette fameuse image transparente  ;)

Pascal YAP

Quotece lien-ci ne renvoit plus vers rien,
Exact   :-\
Corrigé  ;D

ICI l'image OVERLAY.GIF nécessaire au MOD/HACK en question...
Corrigé dans le premier post  ;D

PYAP

the worms

bonjour,

j'ai un petit souci avec une galerie ou l'overlay remplace l'image or que sur les autres ça fonctionne sans problème savez vous d'ou celà peuc venir ?

Merci d'avance pour votre aide ;)

Pascal YAP

Quotej'ai un petit souci avec une galerie ou l'overlay remplace l'image or que sur les autres ça fonctionne sans problème savez vous d'ou celà peuc venir ?
D'après tous les renseignements que vous nous donnez, c'est sans doute un problème  ???

PYAP


the worms

est-ce suite à l'écriture du fichier ? :

Joh_peintures___(11).jpg