İyinet'e Hoşgeldiniz!

Türkiye'nin En Eski Webmaster Forum'una Hemen Kayıt Olun!

Kayıt Ol!

Orjinal resimleri gizleme

Caesar

0
İyinet Üyesi
Katılım
5 Haziran 2006
Mesajlar
1,894
Reaction score
7
Merhaba,

Bir çok arkadaşın sorunu olan kendi hostlarina yukledikleri resimleri baska yerde kullanilmasi ve bu yuzden bandwidth sorunu yaşaması.

Bu konuya kendi cabalarımda bir çözüm ürettim.

bir adet resim.php miz var bu resim.php hazir bir kutuphane idi fakat değiştirmelerim sonucu istedigimizi yapabiliyoruz.

resim.php
PHP:
<?php



$save_to_file = true;

$image_quality = 100;

$image_type = -1;

$max_x = 170;  //Maksimum width

$max_y = 200;  //Maksimum height

$thumbs_folder = ''; //Eğer resimlerinizi sabit bir klasorden cekmiyorsaniz boş bırakın







$to_name = '';



if (isset($_REQUEST['f'])) {

  $save_to_file = intval($_REQUEST['f']) == 1;

}



if (isset($_REQUEST['src'])) {

  $from_name = urldecode($_REQUEST['src']);
  $from_name = base64_decode($from_name);  
  $from_name = str_replace("+","=",$from_name);  

}

else {

  die("Source file name must be specified.");

}



if (isset($_REQUEST['dest'])) {

  $to_name = urldecode($_REQUEST['dest']);

}

else if ($save_to_file) {

  die("Thumbnail file name must be specified.");

}



if (isset($_REQUEST['q'])) {

  $image_quality = intval($_REQUEST['q']);

}



if (isset($_REQUEST['t'])) {

  $image_type = intval($_REQUEST['t']);

}



if (isset($_REQUEST['x'])) {

  $max_x = intval($_REQUEST['x']);

}



if (isset($_REQUEST['y'])) {

  $max_y = intval($_REQUEST['y']);

}





function SaveImage($type, $im, $filename, $quality, $to_file = true) {



  $res = lisanssız;



  // ImageGIF is not included into some GD2 releases, so it might not work

  // output png if gifs are not supported

  if(!function_exists('imagegif')) $type = 3;



  switch ($type) {

    case 1:

      if ($to_file) {

        $res = ImageGIF($im,$filename);

      }

      else {

        header("Content-type: image/gif");

        $res = ImageGIF($im);

      }

      break;

    case 2:

      if ($to_file) {

        $res = ImageJPEG($im,$filename,$quality);

      }

      else {

        header("Content-type: image/jpeg");

        $res = ImageJPEG($im,'',$quality);

      }

      break;

    case 3:

      if ($to_file) {

        $res = ImagePNG($im,$filename);

      }

      else {

        header("Content-type: image/png");

        $res = ImagePNG($im,'',$quality);

      }

      break;

  }



  return $res;



}



function ImageCreateFromType($type,$filename) {

 $im = lisanssız;

 switch ($type) {

   case 1:

     $im = ImageCreateFromGif($filename);

     break;

   case 2:

     $im = ImageCreateFromJpeg($filename);

     break;

   case 3:

     $im = ImageCreateFromPNG($filename);

     break;

  }

  return $im;

}



// generate thumb from image and save it

function GenerateThumbFile($from_name, $to_name, $max_x, $max_y) {



  global $save_to_file, $image_type, $image_quality;



  // if src is URL then download file first

  $temp = false;

  if (substr($from_name,0,7) == 'http://') {

    $tmpfname = tempnam("tmp/", "TmP-");

    $temp = @fopen($tmpfname, "w");

    if ($temp) {

      @fwrite($temp, @file_get_contents($from_name)) or die("Cannot download image");

      @fclose($temp);

      $from_name = $tmpfname;

    }

    else {

      die("Cannot create temp file");

    }

  }



  // get source image size (width/height/type)

  // orig_img_type 1 = GIF, 2 = JPG, 3 = PNG

  list($orig_x, $orig_y, $orig_img_type, $img_sizes) = GetImageSize($from_name);



  // should we override thumb image type?

  $image_type = ($image_type != -1 ? $image_type : $orig_img_type);



  // check for allowed image types

  if ($orig_img_type < 1 or $orig_img_type > 3) die("Image type not supported");



  if ($orig_x > $max_x or $orig_y > $max_y) {



    // resize

    $per_x = $orig_x / $max_x;

    $per_y = $orig_y / $max_y;

    if ($per_y > $per_x) {

      $max_x = $orig_x / $per_y;

    }

    else {

      $max_y = $orig_y / $per_x;

    }



  }

  else {

    // keep original sizes, i.e. just copy

    if ($save_to_file) {

      @copy($from_name, $to_name);

    }

    else {

      switch ($image_type) {

        case 1:

            header("Content-type: image/gif");

            include($from_name);

          break;

        case 2:

            header("Content-type: image/jpeg");

            include($from_name);

          break;

        case 3:

            header("Content-type: image/png");

            include($from_name);

          break;

      }

    }

    return;

  }



  if ($image_type == 1) {

    // should use this function for gifs (gifs are palette images)

    $ni = imagecreate($max_x, $max_y);

  }

  else {

    // Create a new true color image

    $ni = ImageCreateTrueColor($max_x,$max_y);

  }



  // Fill image with white background (255,255,255)

  $white = imagecolorallocate($ni, 255, 255, 255);

  imagefilledrectangle( $ni, 0, 0, $max_x, $max_y, $white);

  // Create a new image from source file

  $im = ImageCreateFromType($orig_img_type,$from_name); 

  // Copy the palette from one image to another

  imagepalettecopy($ni,$im);

  // Copy and resize part of an image with resampling

  imagecopyresampled(

    $ni, $im,             // destination, source

    0, 0, 0, 0,           // dstX, dstY, srcX, srcY

    $max_x, $max_y,       // dstW, dstH

    $orig_x, $orig_y);    // srcW, srcH



  // save thumb file

  SaveImage($image_type, $ni, $to_name, $image_quality, $save_to_file);



  if($temp) {

    unlink($tmpfname); // this removes the file

  }

}





// generate

GenerateThumbFile($from_name, $thumbs_folder. $to_name, $max_x, $max_y);



?>

Şimdi gelelim asıl olaya.

Örneğin resim resimler/bilmemne.jpg şeklinde olsun. Doğal olarak bu web sitenizde http://www.deneme.com/resimler/bilmemne.jpg olarak gözükecek ve isteyen bu resmi kullanabilecek, sizin href'inizi vererek.

Biz şu şekilde yapacağız

PHP:
<?
$resim="resimler/bilmemne.jpg";
$sifrele=base64_encode($resim);
$sifrele=str_replace("=","+",$sifrele);
?>
<img src="resim.php?src=<?=$sifrele?>&x=75&y=75&f=0&t=2&q=80"/>
<?
# linkte verilen &y resmin height'u &x ise width'idir. buradan ayarlayabilirsiniz.
?>
Resim linki şu şekilde olacaktır. resim.php?src=dGh1bWJzLzIuanBn&x=75&y=75&f=0&t=2&q=80

Görüldüğü üzere resim linki : dGh1bWJzLzIuanBn şeklini almıştır. Oysaki gerçek adresimiz: resimler/bilmemne.jpg dir.

Bu şekilde resimlerinizi gizleyebilirsiniz.

Afiyet olsun...
 

Caesar

0
İyinet Üyesi
Katılım
5 Haziran 2006
Mesajlar
1,894
Reaction score
7
O adresteki hali thumb oluşturacağı için boyutu çok düşük olacaktır gerçek haline göre ayrıca Referer sorgusu ile sadece belirtilen web adresinde resim.php nin calişmasi sağlanabilir.

Yani dışarıya ekleseler bile sadece kendi hostunuzda çalışmış olur.
 

Caesar

0
İyinet Üyesi
Katılım
5 Haziran 2006
Mesajlar
1,894
Reaction score
7
Yani resim.php nin en başına

PHP:
$site = $_SERVER["HTTP_REFERER"];

$site = explode("/", $site);

$site = $site[2];
if ($site!="www.domainim.com" or $site!="domainim.com") {
   die();
}
eklenerek hallolmuş olur.
 

theersin

0
İyinet Üyesi
Katılım
2 Şubat 2006
Mesajlar
1,410
Reaction score
4
Konum
Pendik
peki birşey daha xxx.com sitesinin sitemden resim çekilmesine izin vermek istiyorum onu nasıl yapıcaz.
 

Caesar

0
İyinet Üyesi
Katılım
5 Haziran 2006
Mesajlar
1,894
Reaction score
7
PHP:
$site = $_SERVER["HTTP_REFERER"];

$site = explode("/", $site);

$site = $site[2];
if ($site!="www.domainim.com" or $site!="domainim.com" or $site!="xxx.com" or $site!="www.xxx.com") {
   die();
}

resim.php nin ilk başına. burada domainim.com sizin siteniz xxx.com izin vermek istediğiniz sitedir.
 

Mywedding

1
İyinet Üyesi
Katılım
26 Eylül 2006
Mesajlar
5,893
Reaction score
96
Konum
www.odatv.com
caesar , sen süpersin ya
index_actores_superman.jpg
:p
 

BabaPanter

0
İyinet Üyesi
Katılım
15 Aralık 2005
Mesajlar
732
Reaction score
0
Cpanel'de de buna benzer bişey var sanırım.

Direkt Link Koruyucuları

Link koruyucu diğer websitelerinin sizin sitenizde bulunan dosyalara direkt linkler oluşturmalarını önler. İzin verilecek uzantılar dışındaki dosyalar diğer siteler tarafından direkt olarak erişilebilir olacaktır (örnek: html dosyaları). Buna güzel bir örnek, <img> sitenizde yer verdiğiniz bir fotoğraf olabilir. Bu fotoğrafa diğer sitelerden verilecek direkt linkler sizin izin verilen veri transfer miktarınızın istemsiz bir şekilde azalmasına ve zarar görmenize yol açacaktır. Direkt olarak erişimine izin vermek istediğiniz tüm sitelerin aşağıdaki listede yer aldığından emin olmalısınız. Sistem sizin kontrolünüzde olan tüm alanları otomatik olarak listeye ekleyecektir, fakat diğer istediğiniz siteleri siz eklemelisiniz.
 

alorak

0
İyinet Üyesi
Katılım
14 Ekim 2005
Mesajlar
2,035
Reaction score
1
Konum
Ankara
Çözüm kolay ama bilmeyenler için engeller :) Çok iyi paylaşım..
 

sempaty

1
İyinet Üyesi
Katılım
25 Şubat 2005
Mesajlar
3,824
Reaction score
19
Konum
hawaii. ama sanal tur.
bence her resim için php çalıştırmak pek iyi değil. htaccess yardımıyla yapılması daha sağlıklı gibi.

hotlinking i tamamen engellemek için
Kod:
RewriteCond %{HTTP_REFERER} !^http://(www\.)?siteniz.com [NC]
RewriteCond %{REQUEST_URI} !^/olmayanbisey.jpg$
RewriteRule .(gif|GIF|jpg|JPG)$ /yasak.jpg [NC,L]

veya bazı sitelere yasaklamak için
Kod:
RewriteCond %{HTTP_REFERER} ^http://(www\.)?yasakli.com [NC]
RewriteCond %{HTTP_REFERER} ^http://(www\.)?hebele.com [NC]
RewriteCond %{REQUEST_URI} !^/olmayanbisey.jpg$
RewriteRule .(gif|GIF|jpg|JPG)$ /yasak.jpg [NC,L]

yasak.jpg dosyasına şöyle ilgi çekici bi resim koyabilirsiniz :p (imageshack.us sitesinin kurbağası gibi)
 

Türkiye’nin ilk webmaster forum sitesi iyinet.com'da forum üyeleri tarafından yapılan tüm paylaşımlardan; Türk Ceza Kanunu’nun 20. Maddesinin, 5651 Sayılı Kanununun 4. maddesinin 2. fıkrasına göre, paylaşım yapan üyeler sorumludur.

Backlink ve Tanıtım Yazısı için iletişime geçmek için Skype Adresimiz: .cid.1580508955483fe5

Üst