Toplam 200 konuya 1303 yorum yazıldı.
Pdo ile Resim Yükleme İşlemi

Merhaba arkadaşlar bu konumuzda sizlerle pdo ile veritabanımıza resim yükleme işleminden bahsedeceğim. Resim yükleme işlemi yapılırken dikkat edilmesi gereken kurallardan bazıları şunlardır.




  • Resim boyutunun maximum değerini belirlemek

  • Hangi resim uzantılarının kabul edileceğini belirlemek

  • Ve resimimizin yeni ismini rasgele bir değer atayarak veritabanımıza kayıt etmek(Güvenlik için)



Evet bunları dikkate aldıktan sonra bir upload formu oluşturalım :)




<form action="resimyukle.php" method="post" name="form1" enctype="multipart/form-data">

<input type="file" name="resim"/><br/>

<input type="text" name="aciklama"/><br/>

<input type="submit" name="gonder" value="Kaydet"/>

</form>


Formda dikkatinizi çekmesi gereken kısım input type="file" yani dosya yükleme inputu ve enctype kısmıdır. Enctype kısmı formumuzda bulunmaz ise dosya taşıma işlemi gerçekleşmez.



Şimdi bu formumuzu oluşturduk peki butona basıldıgında post ettiği sayfayı yani resimyukle.php yi nasıl kodlayacağız onada bakalım.. :)




if($_POST){

if ($_FILES["resim"]["size"]<1024*1024){//Dosya boyutu 1Mb tan az olsun

if ($_FILES["resim"]["type"]=="image/jpeg"){ //dosya tipi jpeg olsun

$aciklama = $_POST["aciklama"];
$dosya_adi = $_FILES["resim"]["name"];

//Resimi kayıt ederken yeni bir isim oluşturalım
$uret=array("as","rt","ty","yu","fg");
$uzanti=substr($dosya_adi,-4,4);
$sayi_tut=rand(1,10000);

$yeni_ad="uploadklasoru/".$uret[rand(0,4)].$sayi_tut.$uzanti;

//Dosya yeni adıyla uploadklasorune kaydedilecek

if (move_uploaded_file($_FILES["resim"]["tmp_name"],$yeni_ad)){
echo 'Dosya başarıyla yüklendi.';

//Bilgileri veritabanına kayıt ediyoruz..

$sorgu = $db->prepare("INSERT INTO resimler SET resim=:resim,aciklama=:aciklama");

$sorgu->execute(array(':resim'=> $yeni_ad,':aciklama'=>$aciklama));

if ($sorgu){
echo 'Veritabanına kaydedildi.';
}else{
echo 'Kayıt sırasında hata oluştu!';
}
}else{
echo 'Dosya Yüklenemedi!';
}
}else{
echo 'Dosya yalnızca jpeg formatında olabilir!';
}
}else{
echo 'Dosya boyutu 1 Mb ı geçemez!';
}
}
?>


Yüklediğimiz resimleri nasıl çekeriz dersenizde onuda şöyle yaparsınız :)




<?php

$resimler = $db->prepare("SELECT * FROM resimler");
$resimler->execute();

if($resimler->rowCount()){

foreach($resimler as $row){

?>

<img src="<?php echo $row["resim_sutunu_ismi"];?>" alt="Resim" />

<?php
}

}else{

echo "Resim bulunamadı";

}

?>


İşlemimiz bukadar arkadaşlar çok kısa bir süre sonra tüm ekledigim derslerin videolu halinide çekip sizlerle paylaşacağım takipte kalmaya devam ederseniz sevinirim :)



Kolay gelsin arkadaşlar..


Yorumlar

Fevzi

19.02.2017 10:35

Selam kardeşim emeğine sağlık. Bir sorum olacak. Hani emlak scriptlerindeki gibi ya da alışveriş scriptlerindeki gibi br konuya birden fazla resim yükleyip resim yolunu alma olayı nasıl olur bu yazdığın kodlar üzerinden. mantığını kuramadım bir türlü. Yani konu-id olacak ve o konuya atıyorum 10 tane resim diğerine 5 tane resim falan yüklenecek ama id leri görüp ona göre nerede görüneceğini anlayacak şekilde anlatabilmişimdir umarım

withcom

15.02.2017 11:59

$sorgu = $db->prepare("INSERT INTO resimler resim=:resim,aciklama=:aciklama"); INSERT INTO resimler SET.... Olması gerekli değilmi aksi taktirde veritabanına resim bilgilerini kayıt etmiyor :) teşekkürler

Mustafa

01.12.2016 10:00

Merhabalar Hocam Öncelikle Yazı Çok Faydalı Olmuş. Emeğinize Sağlık. Yalnız bir sorum olacaktı benim denediğim bir script te mantık üyeler resim upload edip paylaşabildiği bir ortam var. Devamında her şey güzel gerekli ayarları ben yaptım. çözemediğim tek şey db kayıt ederken türkçe karakter filtresinden geçiremedim çünkü upload mantığı çok karışık gibi birazda acemiyim php kod konusunda sanırım yönlendirmeler laravel ile yapılmış yani ayar dosyasını form action="" şeklinde çağırıyor. resim adına pic_url verilmiş. ama fonksiyonlarını bulamadım. Yardımcılarınız için şimdiden çok teşekkürler.

YAVUZ SELİM ŞAHİN

25.10.2016 15:21

@Selim if ($_FILES["resim"]["type"]=="image/jpeg"){ bak bu kısımda belirtilen dosya tipi sadece jpeg yüklenebilir diye filtreleme yapmışız :) Ayrıca pdo oldugundan dolayı çogu tırnak ve sql injection gibi açıkları tamamen kapatıyor bu normal resim yükleme resim yükleme için verot net sınıfını öneririm onunla ilgilide bir örnek yapacagım en kısa sürede :) bu şekildede resim yükleyebilirsin shell yediremezler bu komutlarla sunucu tarafında açıgın var ise bilemem tabi sunucunda başka domaine girip dizinler arası geçişi kapatmadıgın için tüm domainlerine erişim sağlar shell atan adam sadece yazılım olarak değil sunucu olarakta güvenliği sağlamak zorundasın :)

Selim

25.10.2016 14:54

sadece bu kod güvenli mi? shell yedirmezler mi?

Bu kodlar başlangıç aşamasındaki kişiler içindir. Güvenlik konusunda büyük sorunlar oluşturur. O yüzden gerçek websitesi projelerinde kullanılmasını tavsiye etmem.

Oğuzhan

04.09.2016 23:45

Hocam çok teşekkür ederim. Çok işime yaradı

YAVUZ SELİM ŞAHİN

10.08.2016 21:41

ahmet if ($_FILES["resim"]["type"]=="image/jpeg"){ bölümünde belirtebilirsin istediğin tipleri.

ahmet

10.08.2016 19:14

hocam çoklu resim yüklemek istersek ve png gif gibi formatları desteklesin istersek nasıl yapıcaz ?

Yorum Yaz