Genel Web Tasarım

Php İle Toplu Fotoğraf Upload

PHP bilenler için çok kolay ama benim gibi bilmeyenler için çok zor olan bir konuya değineceğim. PHP yardımı ile class.upload kütüphanesini kullanarak toplu olarak fotoğrafları upload edeceğiz. Upload ettiğimiz fotoğrafları istediğimiz ebatta küçültüp artı olarak thumbnial oluşturup, fotoğrafımıza watermark ekleyeceğiz, sunucuya yüklediğimiz fotoğrafları PDO kullanarak veri tabanına kaydedip istediğimiz fotoğrafları da sileceğiz.


Resimlerin Kaydını Tuttuğumuz Tablomuz

Yukarda gördüğünüz gibi ID – ilanID – resim_adi – tarih – kucuk 5 adet sütundan oluşmaktadır.

Kodlama Kısmı

İlk önce class.upload kütüphanesini indirip projemize dahil edeceğiz.

Functions.php

Bu dosya ile db bağlantımızı oluşturuyoruz.


<?php
set_time_limit(0);
error_reporting(0);
ini_set("display_errors",0);
try {
$db = new PDO("mysql:host=localhost;dbname=dbadi", "kullaniciadi", "sifre",array(PDO::MYSQL_ATTR_INIT_COMMAND =>"SET NAMES utf8",PDO::MYSQL_ATTR_INIT_COMMAND => "SET CHARACTER SET utf8",array( PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION )));
} catch ( PDOException $e ){
print $e->getMessage();
}
$limit = 10;
$sitedomain = "zulfumehmet.tk";
?>

Yukarıdaki dosya sayesinde her sayfada db bağlantısı gerçekleştirmeye gerek kalmadan db bağlantımızı oluşturuyoruz.

index.php?id=xxx

Bu sayfada fotoğraf yükleme ve görüntüleme işlemlerini gerçekleştireceğiz. Kodlarımız şu şekilde


<?

$parametreler = strtolower($_SERVER['QUERY_STRING']); //Adres satırından gelen tüm sorguları aldık.
$yasaklar="%¿¿'¿¿`¿¿insert¿¿concat¿¿delete¿¿join¿¿update¿¿select¿¿\"¿¿\\¿¿<¿¿>¿¿tablo_adim¿¿kolon_adim"; //Buraya tablo adlarınızı da ekleyiniz. Her ekleme sonrasını ¿¿ ile ayırmalısınız.
$yasakla=explode('¿¿',$yasaklar);
$sayiver=substr_count($yasaklar,'¿¿');
$i=0;
while ($i<=$sayiver) {
if (strstr($parametreler,$yasakla[$i])) {
header("location:http://www.zulfumehmet.com/"); //Sql injection girişimi yakalandığında yönlendiriyoruz.
exit;
}

$i++;
}

if (strlen($parametreler)>=90) {
header("location:http://www.zulfumehmet.com/");
exit;
}
// yukardaki komutlar sql injection onlemek maksatli
include 'functions.php'; // db baglantisini yapalim
?>

<?php $gelen_kod = $_GET["id"]; //atadigimiz id numarasini cagiralim index.php?id=xx hangi numara verdigimizi bilelim?>

<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Resimler </title>
<link rel="stylesheet" href="assets/css/styles.css" />
<script src="assets/js/script.js"></script>
<script src="assets/js/albumPreviews.js"></script>
<script src="http://cdn.tutorialzine.com/misc/adPacks/v1.js"></script>
<link href="https://fonts.googleapis.com/css?family=Roboto:300,400,500" rel="stylesheet">
<script type="text/javascript" src="jquery/jquery.js"></script>

<style>
body,html{width:100%;height:100%;,margin:0; padding:0}
div.container{min-height:100%; height:auto !important; height:100%;}

/* test */
div.container{background:white;
z-index:2;
}
#alan img {
display: table-cell;
vertical-align: middle;
}
#ana_div {
height: auto;
width: auto;
margin-right: auto;
margin-left: auto;
background-color: #666666;
z-index:1;
}

.div {
float: left;
height: auto;
width: auto;
margin: 10px;

}
input[type=button], input[type=submit], input[type=file] {

background-color: #346fed;

border: none;

color: white;

padding: 18px 36px;

margin: 5px 3px;

cursor: pointer;
}
</style>
</head>
<body>


<script>
function Goster()
{
document.getElementById("alan").hidden = false;
}
</script>


<div hidden class="container" id="alan" >
<center><img src="loading.gif" alt="yukleniyor" title="yukleniyor"/></center>
</div>

<div id="ana_div">


<div class="div" id="div"><p>Lütfen resim seçip Yükle butonuna tıklayınız. Resim Yükleme işleminin bitmesini bekleyiniz.</p>
<form action="aupload.php" method="post" enctype="multipart/form-data">
<input type="hidden" name="adi" value="<?php echo $gelen_kod; ?>">
<input type="file" name="image[]" accept="image/png, image/jpeg" multiple /><hr />
<input type="submit" name="submit" value="Yükle" onclick="Goster()" />
</div>
<!--Yukarilar susleme sanati ile alakali -->
<div class="div" id="div2"><?php
$query= $db -> prepare("SELECT * FROM resimler where ilanID='$gelen_kod'"); // resimler tablaosunda bulunan atadigimiz id ait bilgi varsa resimleri gostersin.
$query-> execute();
$musteriler = $query -> fetchAll(); ?>

<?php
foreach($musteriler as $dizi){
?>

<a href="sil.php?id=<?=$dizi["Id"]?>" class="album">
<img src="files/<?php echo $gelen_kod ?>/thumbnail/<?=$dizi["kucuk"]?>" alt="<?=$dizi["kucuk"]?>" />
<p class="button">Sil</p></a>


<?php }
// dongu olusturup resimlerin hepsini siralamasini istedik. Arti olarak silmek icinde resmin idsini kullanacagiz
?></div>
</div>

</body>
</html>
Sil.Php

Bu dosya yardımı ilede db kayıtlı olan ilanları hem sunucudan hem db den sileceğiz. Kodlarımız şu şekilde.


<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Resimler </title>
<link rel="stylesheet" href="assets/css/styles.css" />
<script src="assets/js/script.js"></script>
<script src="assets/js/albumPreviews.js"></script>
<script src="http://cdn.tutorialzine.com/misc/adPacks/v1.js"></script>
<link href="https://fonts.googleapis.com/css?family=Roboto:300,400,500" rel="stylesheet">
<script type="text/javascript" src="jquery/jquery.js"></script>
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="w3.css">

</head>
<body>

<?php

$parametreler = strtolower($_SERVER['QUERY_STRING']); //Adres satırından gelen tüm sorguları aldık.
$yasaklar="%¿¿'¿¿`¿¿insert¿¿concat¿¿delete¿¿join¿¿update¿¿select¿¿\"¿¿\\¿¿<¿¿>¿¿tablo_adim¿¿kolon_adim"; //Buraya tablo adlarınızı da ekleyiniz. Her ekleme sonrasını ¿¿ ile ayırmalısınız.
$yasakla=explode('¿¿',$yasaklar);
$sayiver=substr_count($yasaklar,'¿¿');
$i=0;
while ($i<=$sayiver) {
if (strstr($parametreler,$yasakla[$i])) {
header("location:http://www.zulfumehmet.tk/"); //Sql injection girişimi yakalandığında yönlendiriyoruz.
exit;
}

$i++;
}

if (strlen($parametreler)>=90) {
header("location:http://www.zulfumehmet.tk/");
exit;
}
include 'functions.php';

?>

<?php

$id = $_GET['id'];
?>
<?php

// veri cekme
{
$veri = $db->prepare('SELECT * FROM resimler WHERE id = :sira');
$veri->bindValue(':sira', $id, PDO::PARAM_INT);
$veri->execute();
$dizi = $veri->fetchAll(PDO::FETCH_ASSOC);

$kucuk = $dizi[0]['kucuk'];
$resimid = $dizi[0]['Id'];
$resim_adi = $dizi[0]['resim_adi'];
$ilanid = $dizi[0]['ilanId'];
}

?>

<div class="w3-container">
<h1>İlan Resmi silme.</h1>
<a href="index.php?id=<?php echo $ilanid; ?>"><p class="button">Başka Resim Sil</p></a>
<ul class="w3-ul w3-card-4">

<?php

// kaydi silme

$kullanici_rutbe=$ilanid;
if ($kullanici_rutbe==$ilanid) {
echo " ";
{
$sorgu = $db->query("DELETE FROM resimler WHERE id = '$resimid'");

if ($sorgu->rowCount() > 0) {
echo $sorgu->rowCount() . '<li class="w3-bar"><span class="w3-bar-item w3-button w3-white w3-xlarge w3-right">Silindi</span><img src="cop.jpg" class="w3-bar-item w3-circle w3-hide-small" style="width:85px"><div class="w3-bar-item"><span class="w3-large">';
} else {
echo '<li class="w3-bar"><span class="w3-bar-item w3-button w3-white w3-xlarge w3-right">Silinmedi !!!</span><img src="no.png" class="w3-bar-item w3-circle w3-hide-small" style="width:85px"><div class="w3-bar-item"><span class="w3-large">Bir Sorun Oluştu </span><br><span>Herhangi bir kayıt silinmedi</span> </div></li>';
}

}

// sunucudan silme kismi
unlink("files/$ilanid/$resim_adi");
echo 'Resim';

unlink("files/$ilanid/thumbnail/$kucuk");
echo ':'.$kucuk.' </span><br><span>Thumbnail: '.$resim_adi.'</span> </div></li>';

} else {
echo '<li class="w3-bar"><span class="w3-bar-item w3-button w3-white w3-xlarge w3-right">Silinmedi !!!</span><img src="no.png" class="w3-bar-item w3-circle w3-hide-small" style="width:85px"><div class="w3-bar-item"><span class="w3-large">Bir Sorun Oluştu </span><br><span>Bu resmi silme yetkiniz yoktur</span> </div></li>';
}

?>

</ul>
</div>

</body>
</html>

İşlemlerimiz bu kadar takıldığınız yerde sormaya çekinmeyiniz. Demo için aşağıdaki butonu kullanınız. Demo ilan olarak index.php?id=166 kullanabilirsiniz.

Örnek çalışmayı indirmek için aşağıdaki butonu kullanınız

15 Yorumlar
  1. ömer 7 yıl önce
    Cevapla

    Merhaba
    Şu satırda hata veriyorda:
    Notice: Undefined variable: db in C:\xampp\htdocs\aupload.php on line 82

    Fatal error: Call to a member function query() on null in C:\xampp\htdocs\aupload.php on line 82

  2. ömer 7 yıl önce
    Cevapla

    Merhaba
    Hatayı düzelttimde şimdi kaydederkende ilanid kısmı kaydolmuyor

    • index.php?id=xxx olarak giriş yapıyor musunuz? kendiniz manuel bir id vermeniz gerekiyor. Yoksa random ile bir id üretmeni gerekiyor.

  3. ömer 7 yıl önce
    Cevapla

    Merhaba
    Son bir şey bir tek id ye birden falza resmi nasıl ekletebilirim?

    • aupload.php dosyasını aç:
      $limit = $db->query(“SELECT * FROM resimler where ilanid=’$gelen_kod'”);
      $limit = $limit->rowCount();
      if ($limit<10)
      10 rakamını arttır o sayıya ulaşana kadar yükleme yapar. 1000 yapsan 1000 adet yükler. Sınırlama olmasıın diyorsan. Limitlendirme döngüsünü kaldırman lazım.

  4. ömer 7 yıl önce
    Cevapla

    Sorun o değil şimdi ilanidyi otomatik nasıl atarız manul değilde

    • Bir random ile yönlendireceksin. index.php dosyasını resimler.php yap, index.php ile bir random ile yöneldireceksin.

  5. ömer 7 yıl önce
    Cevapla

    Teşekkürler halloldu.

  6. Roman 6 yıl önce
    Cevapla

    Zulfu bey merhaba paylasim icin tesekkurler.. benim emlak sitem var bu kodu oraya eklemek istiyorum ne yaptimsa olmadi yardim edermisini9z ?? oldhosy@gmail.com whatsapp +994512511414 simdiden tesekkurler

  7. codepack 5 yıl önce
    Cevapla

    selamlar paylaşımınız için teşekürler burada merak ettiğim husus var
    bir konu id’sine icon, header imaj ve görsel 1 ,görsel 2, görsel 3 ,görsel 4, görsel 5, şeklinde yüklenmesini ve konu idsinin altında slider şeklinde görsel 1 ,görsel 2, görsel 3 ,görsel 4, görsel 5 resimlerinin görünmesi ve ayrıca icon header imaj ve görselleri ayrı bir klasörde saklamak istersem nasıl yapmam gerekiyor bu çözemedim yardımcı olurmusun rica etsem

    • Tam ne yapmak istediğinizi anlayamadım, yükleme yaparken gerekli yolları belirleyebilirsiniz, id ile klasör oluşturuyor, bunu istediğiniz klasöre yükleyebilirsiniz.

  8. Hasan 4 yıl önce
    Cevapla

    Zülfü Bey,

    Çoklu resim yükleme php kodları konusunda internette aramadığım site kalmadı diyebilirim, sizin bu kodlar işime yarayacak gibi ama çalıştıramadım, veri tabanına kayıt yaptırmadım ayrıca “Yüklenen Resimler” yazısı altında resimler düşmüyor, zaten veri tabanı tablosunu görmüyor ki resimler gelsin… . Hata konusunda tüm dosyaları tarıyorum, ne yazık ki hata bulamıyorum. Yardımcı olur musunuz???
    Slm.

Yorum Yaz

*E-mail adresiniz gizli kalacaktır.

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Öneriler

Yeni Makaleler

Deneme Bonusu Veren Siteler 2025

Deneme bonusu veren siteler 2025 yılına damga vuruyor! Kullanıcılar artık sadece oyun değil, aynı zamanda yatırım yapmadan kazanma fırsatları arıyor. İşte bu noktada, yatırım şartsız ve çevrimsiz bonus sunan güvenilir bahis siteleri ön plana çıkıyor.

Slotin, Betci, Casival, Betmaks, Dedebet ve Casinobell gibi öne çıkan platformlar, kullanıcılarına yüksek oranlı ve çevrimsiz deneme bonusları sunarak 2025’te bahis severlerin gözdesi hâline geliyor. Elbette bunlarla sınırlı değil; toplamda +99 bahis sitesi listemizde, her zevke ve ihtiyaca uygun onlarca farklı seçenek yer alıyor.

Hem yeni başlayanlar hem de tecrübeli bahisçiler için hazırladığımız bu liste, sektördeki en güncel ve en avantajlı platformları içeriyor. NetEnt, Microgaming, Pragmatic Play gibi dev sağlayıcılarla çalışan bu siteler, yüksek RTP oranları, hızlı ödeme yöntemleri ve mobil uyumlu arayüzleriyle öne çıkıyor.

Bahis siteleri, 2025 yılında sundukları yeniliklerle dikkat çekiyor. Spor bahislerinden canlı casino oyunlarına, e-sporlardan slot makinelerine kadar geniş bir içerik sunan bu platformlar, her türden oyuncuya hitap ediyor.

Özellikle mobil uyumlu bahis siteleri, kullanıcıların her yerden kolay erişim sağlamasını mümkün kılıyor. Modern arayüzleri, hızlı ödeme sistemleri ve cazip promosyonlarıyla kullanıcı deneyimini zirveye taşıyorlar. Kullanıcılar, yatırım yapmadan önce bu sitelerde sunulan yatırımsız deneme bonusları ile hem eğlenip hem de kazanma şansını değerlendirebiliyor.

2025 itibarıyla güvenilir bahis siteleri, lisanslı yapıları ve yüksek güvenlik protokolleri sayesinde sektörde ön plana çıkıyor. Hem yeni başlayanlar hem de deneyimli oyuncular için ideal koşullar sunan bu siteler, heyecan dolu ve kazançlı bir deneyim arayanlar için biçilmiş kaftan.

Bu nedenle bahis severler, sadece bonus miktarına değil, aynı zamanda sitenin lisansına, ödeme geçmişine ve kullanıcı yorumlarına da dikkat etmelidir. 2025'te en iyi deneme bonusu veren siteler arasından seçim yaparak, risksiz ve keyifli bir başlangıç yapabilirsiniz.

Deneme bonusu veren siteler şu şekildedir:

 

En Güncel Yatırımsız Deneme Bonusu Sunan Siteler 2025

2025’te bahis dünyasında yatırımsız deneme bonusu arayan kullanıcıların karşısına birbirinden cazip seçenekler çıkıyor. Özellikle SlotbonAtlantisbahisBahixBetmoreBetmatikParobet ve Twinplay gibi yeni casino siteleri, yatırım şartsız sundukları kayıt bonuslarıyla dikkat çekiyor. Hızlı kayıt süreci, bedava spin kampanyaları ve çevrimsiz çekim avantajları sayesinde bu siteler, hem yeni başlayanlar hem de deneyimli bahisçiler için ideal durak hâline geliyor.

Bu platformların sağladığı lisanslı altyapı, hızlı ödeme yöntemleri, geniş oyun yelpazesi ve kullanıcı dostu arayüzler, 2025’in rekabetçi bahis pazarında onları bir adım öne taşıyor. Ancak unutma; doğru siteyi seçerken sadece bonus miktarına değil, ödeme hızı, müşteri desteği ve genel güvenilirlik gibi kriterlere de mutlaka dikkat etmek gerekiyor. Sen de bu güncel fırsatları değerlendirerek, yatırımlı ya da yatırımsız en iyi bonuslara ulaşabilirsin!

Yatırımsız deneme bonusu sunan siteler, özellikle yeni kullanıcıları cezbetmek için en çok tercih edilen yöntemlerden biridir. Bu sistemde kullanıcılar, hiçbir ödeme yapmadan doğrudan bahis oyunlarına katılım sağlayabilirler. Üyelik adımlarını tamamlayan herkes, anında promosyondan yararlanabilir ve sunulan oyun seçeneklerini deneyimleyebilir.

Yatırımsız bonus veren siteler, kullanıcılara sıfır risk ile başlangıç yapma fırsatı tanır. Bu da oyuncuların hem güvenini artırır hem de oyunlara karşı ilgilerini yükseltir. İlk adımda yatırımı zorunlu kılmayan bu siteler, denemeye açık kullanıcılar için cazip bir seçenektir.

Yatırımsız deneme bonusu, bahis piyasasına giriş yapmak isteyenler için mükemmel bir fırsattır. Oyuncular bu bonuslar sayesinde kendi sermayelerini kullanmadan, istedikleri oyunları deneyip strateji geliştirme imkanı bulurlar. Aynı zamanda siteyi tanımak ve en uygun içerikleri keşfetmek açısından da avantaj sağlar.

Çevrimsiz Deneme Bonusu Veren Siteler

Çevrimsiz deneme bonusu, çevrimiçi bahis ve casino sitelerinde yeni üyelere sunulan en cazip promosyonlardan biridir. Kayıt işlemi tamamlandıktan sonra genellikle otomatik olarak tanımlanan bu fırsatlar, kullanıcıya gerçek bakiye harcamadan oyun oynama imkânı tanır. Özellikle siteyi tanımak, oyunları test etmek ve platformun sunduğu avantajları değerlendirmek için idealdir.

Bahis siteleri için çevrimsiz bonus, müşteri memnuniyetini artıran ve sadık kullanıcı kitlesi oluşturmada etkili bir araçtır. 2025 yılında bu promosyonların daha yaygın hale gelmesi beklenmektedir. Böylece hem yeni üyeler siteye çekilecek hem de var olan kullanıcılar sadık kalmaya devam edecektir.

İşte Çevrimsiz Deneme Bonusu Veren Bahis Siteleri:

 

Sıkça Sorulan Sorular (FAQ)

✅ Deneme bonusu nedir?

Deneme bonusu, bahis veya casino sitelerinin yeni kullanıcılara sunduğu, para yatırmadan önce oyunları deneme imkanı sağlayan promosyondur. Genellikle slot oyunlarında veya belirli casino içeriklerinde geçerlidir.

✅ Yatırımsız bonus nasıl alınır?

Yatırımsız bonus almak için güvenilir bir siteye üye olup e-posta veya telefon doğrulaması yapmanız yeterlidir. Çoğu zaman bonuslar otomatik tanımlanır; bazen canlı destekten de talep edebilirsiniz.

✅ Hangi siteler en yüksek deneme bonusunu veriyor?

Slotin, Betci, Casival ve Betmaks gibi siteler 2025 yılında en yüksek deneme bonusu veren güvenilir platformlar arasında yer alıyor. Ancak her siteye kaydolmadan önce bonus şartlarını mutlaka incelemelisiniz.

✅ Deneme bonusu çevrimsiz mi?

Her deneme bonusu çevrimsiz değildir. Bazı siteler çevrim şartı koyarken, bazıları doğrudan çekilebilir çevrimsiz bonus sunar. Çevrim şartlarına dikkat etmek önemlidir.