admin tarafından 2019-08-17 18:04:07 tarihinde yazıldı. Tahmini okunma süresi 1 dakika, 52 saniye. 433 kere görüntülendi.
Disclaimer
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.