schutz sämplicher bilder schutz sämplicher bilder
 

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

schutz sämplicher bilder

Started by dnm, July 31, 2008, 11:55:00 PM

Previous topic - Next topic

0 Members and 2 Guests are viewing this topic.

dnm

hallo zusammen. ich muss noch mal stören. also folgendes. hab mein coppermine am laufen und hatte schon mal was zu nen bilderschutz art wasserzeichen geschrieben und arg gesucht im forum nur ich habs nicht hinbekommen.

in kurzen worten, ich möchte über allen bilder, thumbnails und voransicht und großansicht nene leichten downloadschutz haben in dem ich nen overlay mit nem gif mache.

bevor welche wieder meckern, es gibt so ähnliche threads aber ersten hab ich die noch nicht mal hinbekommen und zweitens mag ich die auch auf en kleinen bildern / thumbnails haben.

gibts vielleicht wen gütiges wer mir helfen mag

danke euch grüße

Joachim Müller

Es gibt http://forum.coppermine-gallery.net/index.php/topic,33782.0.html
Wenn Du weitere Funktionalität brauchst musst Du sie programmieren.

loisl

einen wirklichen Schutz gibt es sowieso nicht, denn wenn der Browser auf die Seite zugreift sind die Bilder ja schon beim Benutzer .... sonst könnte er sie ja nicht sehen :-)
Die Variante mit dem Watermark nachträglich beim php-Seitenaufbau ist mir zu Rechenintensiv und macht irgendwie nicht wirklich viel sinn, dann müsste man die Bilder auch alternativ nach Onlinezahlung ein download anbieten. Und dann sind ide Bilder natürlich für eine hack interessanter, da sie ja irgendwie ohne WZ auf den Server liegen. Des weiteren müssten die Bilder ja denn auch in voller Auflösung auf dem Server sein und bei 10MB pro Bild und das mal einige 10.000 dann muss der Server schon mächtig Platte haben.
Ich habe die Lösung über ein Javaskript für Photoshop gewählt .. das macht mir gleich die Bildgrössenänderung, Schärfung, IPTC-Beschriftung, Wasserzeichen ....
und dann Ab auf den Server...

lg loisl

Stramm

Plattenplatz ist mittlerweile so richtig günstig... sollte also kein Thema mehr sein wenn man einen Shop betreibt. Das Original braucht weiterhin seinen vollen Platz, das Vorschaubild (thumb, intermediate, fullsize) gerade mal ein paar kb.
Zudem können die Originale außerhalb Webroot abgelegt werden. Nach dem Bezahlen werden sie in den Downloadordner des Users kopiert. Also recht 'hackingsicher' (wenn es so etwas gibt).
Für mich die beste Lösung ist immer noch ein permanentes Watermark. Ob dies jetzt mit einem Bildbearbeitungsprogramm lokal oder über ein Mod/ Plugin für Coppermine während des Uploads geschieht ist zweitrangig.

dnm

naja so einen riesenschutz will ich gar nicht und ich weiss jaauch wie man die schutzmechanismen umgehen kann ect.

ich will eigentlich einfach nur über allen bildern, sprich fotos nen transparentes gif haben. wenn dann wer rechte maustaste speichern unter versucht oder grafik anzeigen das das tranzparente bild angezeigt wird.

lg

Αndré

Wie Joachim schon schrieb, ist genau das hier das was du suchst.

dnm

man man man is mein englisch schlecht. komm kaum hinterher.

jemand deutschsprechendes hat das noch nicht gemacht nehm ich an.

hab da ganz schön zu lämpfen   :'(


Αndré

Quote from: Stramm on July 12, 2006, 09:43:57 AM
Installation: unzip the attachment and open the txt file. It's contents copy into the theme.php you're actually using or want to use the transparent gif overlay on (right above the final ?>).

Finally copy the overlay.gif into your coppemine/images directory

- overlay.zip entpacken
- Textdatei öffnen und den Inhalt ans Ende deiner theme.php kopieren (direkt vor ?>)
- overlay.gif nach coppemine/images kopieren

dnm

hey erstmal zwischendurch ein dickes danke und auch wenn ich nerve hab aber alles so gemacht aber wenn ich dann versuche die startseite der gallery zu laden bekomme ich nur eine rein weisse seite angezeigt. muss ich noch etwas beachten??

dnm

ok den fehler warum das overlay nicht funktioniert hat hab ich gefunden.

und zwar hatte ich lightbox eingefügt. also ohne lightbox funtioniert das tadellos.

nur gibt es eine möglichkeit das auch mit lightbox zu verwenden. aus dem grund, weil nun bei der großansicht die bilder nicht mehr skaliert werden usw.

danke schon mal

Joachim Müller

Quote from: dnm on August 05, 2008, 09:50:48 PM
nur gibt es eine möglichkeit das auch mit lightbox zu verwenden.
Ist das eine Frage? Bitte auf Interpunktion achten. Ein wenig mehr Rechtschreibung und sorgfältiger Einsatz von Groß-/Kleinschreibung wäre auch kein Fehler, da auch das zur Lesbarkeit Deiner Postings beitragen würde.

Joachim

dnm

Naja danke für deinen Hinweis. Ich werde es berücksichtigen. Wobei eigentlich ich die Postings beim Lesen schlüssig finde. Aber auch egal. Werde mich in Zukunft daran halten. Versprochen.  ;)

Dann auf einen neuen Versuch. Folgendes:
Ich versuche schon einige Zeit die Overlay-Funktion in meine Gallerie einzubauen. Dieses hat nicht funktioniert und ich dachte das ich den dazugehörigen Thread, der hier freundlicher Weise angezeigt wurde, nicht verstanden hätte.
Die Fehlfunktion enstand aber aus dem Umstand, dass ich ebenfalls die Lightbox- Funktion schon in meiner Theme.php eingebaut hatte.

Somit würden beide Funktionen getrennt von einander korrekt funktionieren.

Jetzt also "die Frage", besteht eine Möglichkeit beide Funktionen zu kombinieren, so dass ich weiterhin mit der Lightbox- Funktion arbeiten kann, aber dennoch über jedes Bild ein Overlay liegt, so auch wenn ich das Foto mit der Lightbox aufrufe.

Ich hoffe dieser Post war so politisch korrekt. Also wäre echt super von euch. Ich bekomme es sonst nicht so hin, ich bin ja auch Fotograf und noch am lernen.

Danke euch ...

Joachim Müller

Der Lightbox-Hack ist der kompliziertere, daher müsstest Du versuchen, den Overlay-Hack in den Lightbox-Hack einzubauen.

dnm

Also um ehrlich zu sein, habe ich mir das ein wenig leichter vorgestellt.

Also, habe mir beide Funktionen angeschaut und ein wenig probiert, allerdings mit keinem Erfolg.

Wobei nur an zwei Stellen Unterschiede auftreten. Und zwar..
[Ich nenne folgend die theme.php mit der Overlay-Funktion Overlay.php und die theme.php mit der lightbox- Funktion  lightbox.php]

Overlay.php:
    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\" width={$CURRENT_PIC_DATA['pwidth']} height={$CURRENT_PIC_DATA['pheight']} border=\"0\" alt=\"\" /><br />\n";
            $pic_html .= "</td></tr></table>";
}


an gleicher Stelle in der lightbox.php:
    if ($mime_content['content']=='image') {
        if (isset($image_size['reduced'])) {
#################################################
        //First part of lightbox update
        $pic_html = lightbox_list($CURRENT_PIC_DATA);
        //End of first part
#################################################
        } else {
            $pic_html = "<img src=\"" . $picture_url . "\" {$image_size['geom']} class=\"image\" border=\"0\" alt=\"\" /><br />\n";
        }



und nun an weiterer Stelle...

Overlay.php:
    $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
}

?>


lightbox.php:
    $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);
}

#################################################
//Second part of lightbox update

function lightbox_list($picId) {
################################################
//Set max number of images
$max = -1; //(-1 for all pics in album)
################################################
    global $lang_display_image_php, $CONFIG;
$i = 0;
$pid = $picId['pid'];
$aid = empty($_GET['album']) ? $picId['aid'] : $_GET['album'];
$pic_data = get_pic_data($aid, $pic_count, $album_name, -1, -1, false);
$imax = 0; //counter
$max = $max/2;
foreach ($pic_data as $picture){
if ($picture['pid'] == $pid) {
//the number of the picture in  order
$picnumber = $imax;
}
$imax++;
}
//Check beginning and ending of album
if(! ($max == ((-1)/2))){
if ($imax > $max){
if ($picnumber < $max || $picnumber == 0){
$down = 0;
$up = 0 + ($max*2);
}elseif (($picnumber + $max) > $imax){
$down = $imax - ($max*2);
$up = $imax;
}else{
$down = $picnumber - $max;
$up = $picnumber + $max;
}
}else{
$down = 0;
$up = $imax;
}
}else{
$down = 0;
$up = $imax;
}

foreach ($pic_data as $picture) {
if ($i >= $down && $i <= $up){
if($CONFIG['thumb_use']=='ht' && $picture['pheight'] > $CONFIG['picture_width'] ){
  $condition = true;
}elseif($CONFIG['thumb_use']=='wd' && $picture['pwidth'] > $CONFIG['picture_width']){
  $condition = true;
}elseif($CONFIG['thumb_use']=='any' && max($picture['pwidth'], $picture['pheight']) > $CONFIG['picture_width']){
  $condition = true;
}else{
$condition = false;
}
if (is_image($picture['filename'])) {
if ($CONFIG['make_intermediate'] && $condition ) {
$picture_url = get_pic_url($picture, 'normal');
} else {
$picture_url = get_pic_url($picture, 'fullsize');
}
$picture_url_fullsize = get_pic_url($picture, 'fullsize');
$pic_title = ($picture['title'] ? $picture['title'] : strtr(preg_replace("/(.+)\..*?\Z/", "\\1", htmlspecialchars($picture['filename'])), "_", " "));
if ($picture['pid'] == $pid) {
$picList .= "<a href=\"$picture_url_fullsize\" rel=\"lightbox[list]\" title=\"$pic_title\">";
$picList .= "<img src=\"$picture_url\" class=\"image\" border=\"0\" alt=\"$lang_display_image_php[view_fs]\" /><br />";
$picList .= "</a>\n";
}else{
$picList .= "<a href=\"$picture_url_fullsize\" rel=\"lightbox[list]\" title=\"$pic_title\"></a>\n";
}
}
}
$i++;
}
return $picList;
}//End of second part
#################################################

?>


Naja, vielleicht ist das doch ein wenig zu groß für mich.

Sorry

dnm

Keiner der mir vielleicht helfen kann.

Also sorry, aber ich bekomme es einfach nicht hin. Hab fast das ganze Wochenende damit zugebracht,
hab die Lösung aber immer noch nicht gefunden.

Wenn mir so keiner helfen kann, weiss zumindest wer ein Forum in dem mir vielleicht wer helfen kann.

Ist zwar ne blöde frage, ich weiss aber sonst keine Lösung.

Danke euch schon mal





Αndré

Quote from: dnm on August 10, 2008, 06:55:14 PM
Keiner der mir vielleicht helfen kann.
Das ist eine Frage und ans Ende eines Fragesatzes steht ein Fragezeichen!


Quote from: dnm on August 10, 2008, 06:55:14 PM
Wenn mir so keiner helfen kann, weiss zumindest wer ein Forum in dem mir vielleicht wer helfen kann.
http://forum.coppermine-gallery.net/index.php/board,30.0.html



Ansonsten dürfte es (theoretisch) nicht so schwer sein. Beim Overlay-Hack wird anstatt das Bild anzuzeigen, eine Tabelle mit dem Bild als Hintergrund erstellt und dann das transparente gif darübergelegt.

Wenn du dir jetzt die Funktionen anschaust wirst du sehen, dass du das:
$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\" width={$CURRENT_PIC_DATA['pwidth']} height={$CURRENT_PIC_DATA['pheight']} border=\"0\" alt=\"\" /><br />\n";
            $pic_html .= "</td></tr></table>";

an dieser Stelle:
$picList .= "<a href=\"$picture_url_fullsize\" rel=\"lightbox[list]\" title=\"$pic_title\">";
$picList .= "<img src=\"$picture_url\" class=\"image\" border=\"0\" alt=\"$lang_display_image_php[view_fs]\" /><br />";
$picList .= "</a>\n";
}else{
$picList .= "<a href=\"$picture_url_fullsize\" rel=\"lightbox[list]\" title=\"$pic_title\"></a>\n";

einbauen musst.

dnm

Mmhhhh ok, werde besser auf Satzzeichen achten.
Hier nimmt man es aber äusserst genau mit der Rechtschreibung.
Das erste Forum in dem das so ist.

So, erstmal danke für deine Zeit, aber viel schlauer bin ich dann doch nicht.

Eher verwirrter!!

Ich habe auch keine Lust mehr weiter rum zu probieren.

Also, für welchen Kurs würde mir jemand helfen wollen und wie läuft so etwas im Detail ab??

Danke euch!!

PS. Bitte keine Verlinkung in den englischsprachigen Teil des Forum's, würd das gerne auf Muttersprachenebene besprechen.

dnm

Mmhhh, jetzt biete ich schon eine Bezahlung an und dennoch keiner der antwortet.

Mache ich etwas falsch??

Immerhin lesen diesen Thread etliche.

??? ???

Αndré

Ich schau mir morgen mal den Lightbox-Hack an.

Joachim Müller

Quote from: dnm on August 11, 2008, 09:28:46 PM
Mmhhh, jetzt biete ich schon eine Bezahlung an und dennoch keiner der antwortet.
Das ist keine Hotline. Es ist nicht so, dass Hunderte von Codern, die dazu in der Lage wären auch jeden Tag diesen Thread lesen. Erlaube den potentiellen Auftragnehmern ein wenig Reaktionszeit.