Php Ürün kaydederken 3 mb'dan büyük dosya hatası
Ürün kaydederken 3 mb'dan büyük dosya hatası alıyorum. Yardımcı olabilir misiniz?
<?php
if(isset($_FILES['dosya'])) {
$dosya_adi = $_FILES['dosya']["name"];
$gecici_yol = $_FILES['dosya']["tmp_name"];
$dosya_tipi = $_FILES['dosya']["type"];
$dosya_boyutu = $_FILES['dosya']["size"];
$ad = $_POST['ad'];
$ozellik = $_POST['ozellik'];
$kategori = $_POST['kategori'];
$eskifiyat = $_POST['eskifiyat'];
$yenifiyat = $_POST['yenifiyat'];
$indirimlifiyat = $_POST['indirimlifiyat'];
$urunsayisi = $_POST['urunsayisi'];
$urunalani = $_POST['urunalani'];
if($dosya_boyutu > (1024*1024*3)) { ?>
<div style="margin-top:25px; text-align:center; font-size:30px;">
<?php
echo "Dosya Boyutu 3 MB'dan Büyük Olamaz <br>";
echo "Form Sayfasına Gitmek İçin";
?>
<a href="urunekle.php" style="color:blue;">Tıklayınız</a>
</div>
<?php
exit;
}
if(!($dosya_tipi=="image/jpeg" || $dosya_tipi=="image/jpg" || $dosya_tipi=="image/png")) { ?>
<div style="margin-top:25px; text-align:center; font-size:30px;">
<?php
echo "Sadece Jpeg, Jpg ve Png Yükleyebilirsiniz <br>";
echo "Form Sayfasına Gitmek İçin";
?>
<a href="urunekle.php" style="color:blue;">Tıklayınız</a>
</div>
<?php
exit;
}
if(move_uploaded_file($gecici_yol,"../../images/indexurunler/" . $dosya_adi)) {
foreach($ad as $index => $names) {
$s_ad = $names;
$s_ozellik = $ozellik[$index];
$s_kategori = $kategori[$index];
$s_eskifiyat = $eskifiyat[$index];
$s_yenifiyat = $yenifiyat[$index];
$s_indirimlifiyat = $indirimlifiyat[$index];
$s_urunsayisi = $urunsayisi[$index];
$s_urunalani = $urunalani[$index];
$sorgualani = "INSERT INTO indexsayfaurun (urun_resim, urun_ad, urun_ozellik, urun_kategori, urun_eskifiyat,
urun_yenifiyat, urun_indirimlifiyat, urun_sayisi,
urun_alani) VALUES ('$dosya_adi', '$s_ad', '$s_ozellik', '$s_kategori', '$s_eskifiyat', '$s_yenifiyat', '$s_indirimlifiyat', '$s_urunsayisi', '$s_urunalani')";
}
$sorgu = mysqli_query($db, $sorgualani);
if($sorgu) {
echo "tamam";
} else {
echo "olmadı";
}
}
}
?>
Soru hatalı mı? 👎
Eğer sorunun kurallara aykırı olduğunu düşünüyorsanız lütfen bize bildirin!
Cevaplar (6)
Bu şekilde hallettim.
<?php
if(isset($_FILES['dosya'])) {
$ad = $_POST['ad'];
$ozellik = $_POST['ozellik'];
$kategori = $_POST['kategori'];
$eskifiyat = $_POST['eskifiyat'];
$yenifiyat = $_POST['yenifiyat'];
$indirimlifiyat = $_POST['indirimlifiyat'];
$urunsayisi = $_POST['urunsayisi'];
$urunalani = $_POST['urunalani'];
foreach($ad as $index => $names) {
$s_ad = $names;
$s_ozellik = $ozellik[$index];
$s_kategori = $kategori[$index];
$s_eskifiyat = $eskifiyat[$index];
$s_yenifiyat = $yenifiyat[$index];
$s_indirimlifiyat = $indirimlifiyat[$index];
$s_urunsayisi = $urunsayisi[$index];
$s_urunalani = $urunalani[$index];
$dosya_sayisi = count($_FILES['dosya']["name"]);
for($i=0; $i<$dosya_sayisi; $i++) {
$dosya_adi = $_FILES['dosya']["name"][$i];
$gecici_yol = $_FILES['dosya']["tmp_name"][$i];
$dosya_tipi = $_FILES['dosya']["type"][$i];
$dosya_boyutu = $_FILES['dosya']["size"][$i];
if($dosya_boyutu > (1024*1024*3)) { ?>
<div style="margin-top:25px; text-align:center; font-size:30px;">
<?php
echo "Dosya Boyutu 3 MB'dan Büyük Olamaz <br>";
echo "Form Sayfasına Gitmek İçin";
?>
<a href="urunekle.php" style="color:blue;">Tıklayınız</a>
</div>
<?php
exit;
}
if(!($dosya_tipi=="image/jpeg" || $dosya_tipi=="image/jpg" || $dosya_tipi=="image/png")) { ?>
<div style="margin-top:25px; text-align:center; font-size:30px;">
<?php
echo "Sadece Jpeg, Jpg ve Png Yükleyebilirsiniz <br>";
echo "Form Sayfasına Gitmek İçin";
?>
<a href="urunekle.php" style="color:blue;">Tıklayınız</a>
</div>
<?php
exit;
}
if(move_uploaded_file($gecici_yol,"../../images/indexurunler/" . $dosya_adi)) {
$sorgualani = "INSERT INTO indexsayfaurun (urun_resim, urun_ad, urun_ozellik, urun_kategori,
urun_eskifiyat, urun_yenifiyat, urun_indirimlifiyat,
urun_sayisi, urun_alani)
VALUES ('$dosya_adi', '$s_ad', '$s_ozellik', '$s_kategori', '$s_eskifiyat', '$s_yenifiyat', '$s_indirimlifiyat', '$s_urunsayisi', '$s_urunalani')";
$sorgu = mysqli_query($db, $sorgualani);
}
}
}
if($sorgu) { ?>
<div style="margin-top:25px; text-align:center; font-size:30px;">
<?php
echo "Ürün Kaydedildi";
?>
</div>
<?php
// header("Refresh:3; url=urunekle.php");
} else { ?>
<div style="margin-top:25px; text-align:center; font-size:30px;">
<?php
echo "Ürün Eklenemedi <br>";
header("Refresh:3; url=urunekle.php");
?>
</div>
<?php
}
}
?>
İki alanı birleştirmek için, dosya yükleme işlemi yapılırken ayrıca veritabanına kayıt işlemi de gerçekleştirilmeli. Örnek olarak, dosya yükleme işlemi başarılı olduğunda, veritabanına kayıt işlemi gerçekleştirilebilir. Bu amaçla, dosya yükleme işlemi sonrasında yer alan "move_uploaded_file" fonksiyonunun içerisinde yer alan "if" bloğunun içerisine yeni bir "foreach" döngüsü ekleyebilirsiniz ve burada veritabanına kayıt işlemi gerçekleştirebilirsiniz.
Kodunuzda dosya yükleme işlemi yapılırken yüklenen dosyanın boyutunun 3 MB'dan büyük olup olmadığı kontrol edilmektedir. Eğer dosya 3 MB'dan büyükse kullanıcıya "Dosya Boyutu 3 MB'dan Büyük Olamaz" uyarısı verilmektedir ve işlem sonlandırılmaktadır. Bu kontrolü kaldırmak isterseniz, kontrol bloğunu kodunuzdan silebilirsiniz veya kontrol bloğunun içerisinde yer alan "if($dosya_boyutu > (1024*1024*3))
" kontrol kriteri değiştirerek dosya boyutunun daha büyük olmasına izin verebilirsiniz.
Şu iki alanı birleştirmem lazım.
Çoklu kaydetme.php
if($_POST) {
$ad = $_POST['ad'];
$ozellik = $_POST['ozellik'];
$kategori = $_POST['kategori'];
$eskifiyat = $_POST['eskifiyat'];
$yenifiyat = $_POST['yenifiyat'];
$indirimlifiyat = $_POST['indirimlifiyat'];
$urunsayisi = $_POST['urunsayisi'];
$urunalani = $_POST['urunalani'];
foreach($ad as $index => $names) {
$s_ad = $names;
$s_ozellik = $ozellik[$index];
$s_kategori = $kategori[$index];
$s_eskifiyat = $eskifiyat[$index];
$s_yenifiyat = $yenifiyat[$index];
$s_indirimlifiyat = $indirimlifiyat[$index];
$s_urunsayisi = $urunsayisi[$index];
$s_urunalani = $urunalani[$index];
$sorgualani = "INSERT INTO indexsayfaurun (urun_ad, urun_ozellik, urun_kategori, urun_eskifiyat,
urun_yenifiyat, urun_indirimlifiyat, urun_sayisi,
urun_alani) VALUES ('$s_ad', '$s_ozellik', '$s_kategori', '$s_eskifiyat', '$s_yenifiyat', '$s_indirimlifiyat', '$s_urunsayisi', '$s_urunalani')";
}
$sorgu = mysqli_query($db, $sorgualani);
if($sorgu) {
echo "tamam";
} else {
echo "olmadı";
}
}
if(isset($_POST['resim-yukle'])){
$dizin_yol = "../yuklenenler";
$dosya_adet = count($_FILES['dosya']['name']);
$dosya_tipi = $_FILES['dosya']["type"];
$dosya_boyutu = $_FILES['dosya']["size"];
if($dosya_boyutu > (1024*1024*3)) { ?>
<div style="margin-top:25px; text-align:center; font-size:30px;">
<?php
echo "Dosya Boyutu 3 MB'dan Büyük Olamaz <br>";
echo "Form Sayfasına Gitmek İçin";
?>
<a href="urunekle.php" style="color:blue;">Tıklayınız</a>
</div>
<?php
exit;
}
if(!($dosya_tipi=="image/jpeg" || $dosya_tipi=="image/jpg" || $dosya_tipi=="image/png")) { ?>
<div style="margin-top:25px; text-align:center; font-size:30px;">
<?php
echo "Sadece Jpeg, Jpg ve Png Yükleyebilirsiniz <br>";
echo "Form Sayfasına Gitmek İçin";
?>
<a href="urunekle.php" style="color:blue;">Tıklayınız</a>
</div>
<?php
exit;
}
for($i=0; $i<$dosya_adet; $i++) {
if (!empty($_FILES['dosya']['name'][$i])) {
move_uploaded_file($_FILES['dosya']['tmp_name'][$i], $dizin_yol . "/" . $_FILES['dosya']['name'][$i]);
header("Location: ?dosya=yuklendi");
}
}
}
Merhaba
if($dosya_boyutu > (1024*1024*3)) { ?>
Şeklinde bir if blogunuz var burada 3.145.728 byte cinsinden sınırlandırmada bulunduruyorsunuz. Bu sebep ile
3 mb dan fazla dosya yüklemek istediğiniz de hata veriyor.
Uyarı Bilgisi
echo "Dosya Boyutu 3 MB'dan Büyük Olamaz <br>";
echo "Form Sayfasına Gitmek İçin";
bu sebep ile 102410243 => 3 yerine daha fazla / daha az sayı belirtebilirsiniz.
Teşekkürler