|

<p>PHP İle Veritabana Belge Aktarımı</p>



Ali Can Gönüllü tarafından 2019-08-17 18:04:07 tarihinde yazıldı. Tahmini okunma süresi 1 dakika, 52 saniye.



Çalışmalarım için bağış yapmak isterseniz Patreon hesabımdan bağışta bulunabilirsiniz.

Blog adresinde yazılanlar sadece eğitim amacıyla deneysel olarak hazırlanmıştır. Konu içerisinde geçen yöntemleri kendi oluşturduğunuz test ortamında denemenizi tavsiye ederiz.
Herhangi bir tarih, yer ve/veya mekanda oluşacak zararlardan alicangonullu.org, alicangonullu.org yöneticisi ve/veya konu yazarı mesul değildir.

Merhabalar!

Bu yazımda sizlere PHP ile güvenli bir şekilde belge nasıl yüklenir bunu göstereceğim. Keyifli okumalar dilerim.  

Öncelikle Blob Nedir bunu açıklamamız lazım.

Blob : Verilerin base64 şeklinde veritabana yazılmış halidir. Bu bazı zaafiyetleri engeller. Avantajı bu. Devavantajı ise çok fazla veritaban trafiği ister.

Bu kısa tanımdan sonra kodlara geçelim isterseniz ?

Ilk önce veritabanımızı şu kodla oluşturalım :

CREATE TABLE `god3err_galeri` (
  `id` int(11) NOT NULL,
  `baslik` varchar(64) CHARACTER SET utf8 NOT NULL,
  `ext` varchar(8) CHARACTER SET utf8 NOT NULL,
  `zaman` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
  `data` mediumblob NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8mb4;

Oluşturduktan sonra PHP dosyamıza ilk satırla girelim.

$kabul = array('jpg','png','gif','pdf');

Burada kabul edilen uzantıları girdik ve bunları şimdi kontrol ettirmeliyiz. If döngüleri burada işimize yarayacak.

if(isset($_FILES['resim']) && $_FILES['resim']['error'] == 0){
$uzanti = pathinfo($_FILES['resim']['name'], PATHINFO_EXTENSION);
if (in_array(strtolower($uzanti), $kabul)) {
//Veritaban Işlemleri
} else {
     echo '<script>
	alert("HATA : Dosya Uzantısı");
	window.location = "index.php"
	</script>';
    exit;
}

Bu şekilde kontrolü sağladık. Şimdi veritaban kısmına bakalım ne dersiniz ?

$update = $db->prepare("INSERT INTO galeri(baslik, data, zaman, ext) VALUES (:title, :data, :imgzaman, :ext) ");
$update->bindValue(':title', $_FILES['resim']['name']); //resmin adı
$update->bindValue(':imgzaman', date('Y-m-d H:i:s')); // yüklenme zamanı
$update->bindValue(':ext',  $_FILES['resim']['type']); // uzantıyı aldık
$update->bindValue(':data', file_get_contents($_FILES['resim']['tmp_name'])); //veriyi aldı
$db->beginTransaction();
$update->execute();
$db->commit();

//if döngüsü

if($update){
echo '<script>
alert("Başarılı");
window.location = "index.php"
</script>';
}
 else {
	 echo '<script>
	 alert("Başarısız");
	 window.location = "index.php"
	 </script>';
 }

Ve böylece veritabana belgemizi ve resmimizi aktardık. Sorularınız için yorum kısmını kullanabilirsiniz.

Okuduğunuz için teşekkürler.