sunucunun php ayarlarından imagick i aktif edip aşağıdaki kod bloğunu kullanarak yapabilirsiniz.
<?php
if ($_FILES['ayar_reklam1']['size'] > 3145728) {
echo "Bu dosya boyutu çok büyük";
$_SESSION['reklam'] = "no";
Header("Location: ../reklam-ayar.php");
exit;
}
$izinli_uzantilar = array('jpg', 'gif', 'png', 'ico', 'webp');
$uploads_dir = '../../dimg';
$tmp_name = $_FILES['ayar_reklam1']['tmp_name'];
$name = $_FILES['ayar_reklam1']['name'];
// Dosya uzantısını doğrula
$ext = strtolower(pathinfo($name, PATHINFO_EXTENSION));
if (!in_array($ext, $izinli_uzantilar) && !empty($name)) {
echo "Bu uzantı kabul edilmiyor";
$_SESSION['reklam'] = "no";
Header("Location: ../reklam-ayar.php");
exit;
}
// Dosya içeriğini kontrol et
if (!empty($tmp_name)) {
$finfo = finfo_open(FILEINFO_MIME_TYPE);
$mime_type = finfo_file($finfo, $tmp_name);
if (!$mime_type || !in_array($mime_type, array('image/jpeg', 'image/gif', 'image/png', 'image/x-icon', 'image/webp'))) {
echo "Geçersiz dosya türü";
$_SESSION['reklam'] = "no";
Header("Location: ../reklam-ayar.php");
exit;
}
finfo_close($finfo);
}
// Güvenli dosya adı oluştur
$benzersizsayi4 = rand(20000, 32000);
$refimgyol = substr($uploads_dir, 6) . "/" . $benzersizsayi4 . $name;
$bos = "0";
$target_path = "$uploads_dir/$benzersizsayi4$name";
// Dosyayı yükle
if (!empty($tmp_name)) {
if (!move_uploaded_file($tmp_name, $target_path)) {
echo "Dosya yükleme hatası";
$_SESSION['reklam'] = "no";
Header("Location: ../reklam-ayar.php");
exit;
}
}
// Resmi WebP'ye dönüştür
if (extension_loaded('imagick')) {
$imagick = new \Imagick($target_path);
$imagick->setImageFormat('webp');
$webpPath = "$uploads_dir/$benzersizsayi4" . pathinfo($name, PATHINFO_FILENAME) . ".webp";
$imagick->writeImage($webpPath);
$imagick->clear();
$imagick->destroy();
// WebP formatında dosya yolu güncelle
$refimgyol = substr($uploads_dir, 6) . "/" . $benzersizsayi4 . pathinfo($name, PATHINFO_FILENAME) . ".webp";
// Orjinal dosyayı sil
unlink($target_path);
}
// Diğer işlemler devam eder...
if (empty($name)) {
$_SESSION['reklam'] = "ok";
Header("Location: ../reklam-ayar.php");
} else {
$resimsilunlink = $db->query("SELECT ayar_reklam1 FROM ayar WHERE ayar_id=0")->fetch(PDO::FETCH_ASSOC);
if ($resimsilunlink['ayar_reklam1'] && !empty($tmp_name)) {
// Silme işlemi gerçekleştirme
unlink("../../" . $resimsilunlink['ayar_reklam1']);
}
$duzenle = $db->prepare("UPDATE ayar SET ayar_reklam1=:reklam WHERE ayar_id=0");
$duzenle->bindParam(':reklam', $refimgyol);
$update = $duzenle->execute();
if ($update) {
$_SESSION['reklam'] = "ok";
Header("Location: ../reklam-ayar.php");
} else {
$_SESSION['reklam'] = "no";
Header("Location: ../reklam-ayar.php");
}
}
?>