phpkolik.com

Veritabanına resim ekleme

etiketler: , , ,

Genelde kullanıcılara upload yaptırarak resimler klasörlerde saklanır. Güvenlik açıkları yüzünden bu yöntem pek iyi değildir. Resimleri veritabanında saklamak bazen daha makul gelebilir. Eğer geniş veritabanı alanınız varsa bence bu yöntem daha mantıklı. Sadece upload yapılan resimler değil sitenin içeriğinde kullanılan resimlerde bu yönemle veritabanında tutulabilir. İşte resimleri veritabanında saklamak için örnek kodlar:

PHP:
  1. <?php
  2. # Kodlama: Burak Dönmez [Private] (webmaster@phpkolik.com)
  3. # Her türlü geliştirmeye açıktır.
  4. # Sorularınız, öneriler ve script hataları için e-posta yoluyla iletişime geçebilirsiniz.
  5. # 15 Temmuz 2007, Pazar
  6. # http://www.phpkolik.com
  7.  
  8. /*
  9. CREATE TABLE `resimler` (
  10. `id` int(11) NOT NULL auto_increment,
  11. `isim` varchar(10) NOT NULL,
  12. `grafik` longtext NOT NULL,
  13. `format` varchar(15) NOT NULL,
  14. PRIMARY KEY  (`id`)
  15. ) ENGINE=MyISAM;
  16. */
  17.  
  18. // veritabanına bağlanıyoruz
  19. @mysql_connect("localhost", "root", "");
  20.  
  21. // eğer get metodu ile dosyaya istek gönderirsek veritabanına kaydettiğimiz resimler ekrana bastırılacak
  22. // örnek kullanım: image.php?id=1
  23. if ( $_GET['id'] )
  24. {
  25. $Temp = @mysql_fetch_assoc(@mysql_query("SELECT * FROM `resimler` WHERE ( `id` = ".$_GET['id']." );"));
  26. header("Content-type: ".$Temp['format']."");
  27. print base64_decode($Temp['grafik']);
  28. }
  29.  
  30. // eğer formdan resim seçip gönderirsek veritabanına kaydetme işlemi yapılacak
  31. if ( $_POST['gonder'] )
  32. {
  33. $Name   = 'IMG'.substr(time().rand(10,99), -7, 7); // resim adı için rast gele sayı üretip bunun ilk 7 hanesini alıyoruz
  34. $Encode = base64_encode(file_get_contents($_FILES['image']['tmp_name'])); // resmimizi veritabanına kaydedilmek üzere kod haline getiriyoruz
  35. $Type   = $_FILES['image']['type']; // resmin formatını öğreniyoruz
  36.  
  37. if ( $Name && $Encode && $Type ) // eğer bütün değişkenler kullanılabilir durumdaysa veritabanına kaydetme işlemine hazır demektir
  38. {
  39. $Query  = @mysql_query("INSERT INTO `resimler` (`isim`,`grafik`,`format`) VALUES ('".$Name."','".$Encode."','".$Type."')");
  40. if ( $Query ) echo 'Kaydedildi'; else echo 'Hata oluştu. Resim boyutu çok büyük olabilir.';
  41. }
  42. else // değişkendler boş kaldıysa uyarı verdiriyoruz
  43. echo 'Resim seçmediniz';
  44. }
  45.  
  46. <form action="'.$_SERVER['PHP_SELF'].'" method="post" enctype="multipart/form-data"> <input name="image" type="file" /> <input value="Gönder" name="gonder" type="submit" /> </form>';
  47.  
  48. $Query = @mysql_query("SELECT * FROM `resimler`"); // tüm resimleri veritabanından okutmak için seçiyoruz
  49.  
  50. <ul>';while ( $Temp = @mysql_fetch_assoc($Query) ) // ön izleme olarak while döngüsünde hepsini ekrana bastırıyoruz
  51. {
  52.     <li><a href="'.$_SERVER['PHP_SELF'].'?id='.$Temp['id'].'">'.$Temp['isim'].'</a> - <img src="'.$_SERVER['PHP_SELF'].'?id='.$Temp['id'].'" height="16" width="16" /></li>
  53. '."\n";
  54. }
  55.  
  56. echo '</ul>
  57. ';
  58. ?>


yorumlar:

Henüz yorum yapılmamış.

Bu yazıya yapılan yorumlar için RSS beslemeleri. TrackBack URI

Yorum Yazın

Yorum yazabilmek için üye girişi yapmalısınız.

Powered by WordPress

Kapat
E-posta ile paylaş