--include -----include/functions.php --views -----views/dosya_kontrol.php upload-work.php index.phpDosya yapım örnek vermem gerekiyorsa yukarıdaki gibidir. Şimdi gelelim yapmak istediğim şeye, upload-work.php de bir form dosyam var ve içerisine dosya yükleniyor, form submit edildiğinde ise views/dosya_kontrol.php ye gönderiyor. Dosya yüklemede sorun olabilir diyebilirsiniz, belki ama onda sorun yok çalışıyor. Şimdi buranın kodunu ise aşağıda veriyorum ve bunun üzerinden bir anlatım yapacağım.
require_once '../include/functions.php';
session_start();
$userID = $_SESSION['userid'];
//1 - HEADER YÖNLENDİRMESİNİ BURADA YAPARSAM SIKINTISIZ ÇALIŞIYOR.
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
$imageResult = uploadFile($_FILES['image-file'], '../assets/uploads/images/', $productSlug);
if (!$imageResult['status']) {
//2 - HEADER YÖNLENDİRMESİNİ BURADA siteadi.com/upload-work.php ye yönlendirmesi gerekirken siteadi.com/views/upload-work.php'ye yönlendiriyor.
header('Location: ../upload-work.php?status=error&message=' . urlencode($imageResult['message']));
exit;
}
// Dosya yükleme
$fileResult = uploadFile($_FILES['file-upload'], '../assets/uploads/files/', $productSlug);
if (!$fileResult['status']) {
//2 - HEADER YÖNLENDİRMESİNİ BURADA siteadi.com/upload-work.php ye yönlendirmesi gerekirken siteadi.com/views/upload-work.php'ye yönlendiriyor
header('Location: ../upload-work.php?status=error&message=' . urlencode($fileResult['message']));
exit;
}Yukarıdaki kodda da açıklama satırı ile //1 ve 2 - HEADER YÖNLENDİRMESİNİ BURADA ile başlayan kısımlarda kullandığımda;- Kısımda kullandığımda kusursuz şekilde yönlendirmeyi yapıyor. (siteadi.com/upload-work.php)(istediğim bu)
- Kısımda yani Dosya durumlarını kontrol eden if sorguları içerisinde kullandığımda ise istediğim şekilde bir yönlendirme yapmıyor.(siteadi.com/views/uplod-work.php)(hatalı olan)
.Htaccess dosyam ise aşağıdaki gibidir.
#Rewrite moturunu aç
RewriteEngine On
#Siteniz bir alt dizinde çalışıyorsa doğru ayarı yapın, bir klasör içerisinde ise /klasöradı/ eğer kök dizinde ise / şeklinde bırakın.
RewriteBase /
#profile/username yapısına yönlendirme
RewriteRule ^profile/([a-zA-Z0-9_-]+)$ profile.php?username=$1 [L,QSA]
#Statik dosyaları, CSS JS, RESİM FONT yeniden yazma kurallarına muaf tut
RewriteCond %{REQUEST_URI} !\.(min.js|min.css|css|js|jpg|png|gif|jpeg|svg|woff|woff2|ttf)$ [NC]
#Eğer mevcut dosya yada dizin yoksa isteği index.php ye yönlendir.
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php [L]Dosya yükleme fonksiyonunun içinde hata olabilir diyenler için onu da bırakıyorum;function uploadFile($file, $targetDir, $prefix) {
if (!isset($file['tmp_name']) || empty($file['tmp_name'])) {
return ['status' => false, 'message' => 'Dosya yüklenmedi veya geçici dosya eksik.'];
}
$fileName = sanitizeFileName($prefix . '-' . rand(100000, 999999) . '.' . pathinfo($file['name'], PATHINFO_EXTENSION));
$targetPath = $targetDir . $fileName;
if (!is_dir($targetDir)) {
return ['status' => false, 'message' => 'Hedef klasör mevcut değil: ' . $targetDir];
}
if (!is_writable($targetDir)) {
return ['status' => false, 'message' => 'Hedef klasör yazılabilir değil: ' . $targetDir];
}
if (move_uploaded_file($file['tmp_name'], $targetPath)) {
return ['status' => true, 'fileName' => $fileName];
} else {
return ['status' => false, 'message' => 'Dosya yüklenirken bir hata oluştu.'];
}
}Yardımcı olursanız çok sevinirim, kafayı sıyırmak üzereyim