• 14-01-2025, 21:54:59
    #1
    Herkese merhabalar ve iyi forumlar. Üzerinde çalıştığım bir proje var ve başım header() yönlendirmeleriyle belada size kısa dosya yapımdan daha sonra koddan bahsedeceğim daha sonra oluşan yazacağım.
    --include
    -----include/functions.php
    --views
    -----views/dosya_kontrol.php
    upload-work.php
    index.php
    Dosya 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;
    1. Kısımda kullandığımda kusursuz şekilde yönlendirmeyi yapıyor. (siteadi.com/upload-work.php)(istediğim bu)
    2. 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)
    Denemediğim şey kalmadı direkt statik bir şekilde url ile yönlendirmek istedim, ___DIR___, chdir, dirname, chdir('/path/to/project/root') denedim ama asla olmuyor.

    .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
  • 14-01-2025, 21:59:19
    #2
    ../../ denedinizmi ? veya siteadi.com/upload-work.php yazmayı denediniz mi?
  • 14-01-2025, 22:00:44
    #3
    pekmezcimuzo adlı üyeden alıntı: mesajı görüntüle
    ../../ denedinizmi ? veya siteadi.com/upload-work.php yazmayı denediniz mi?
    İkisinide denedim hocam maalesef hala aynı.
  • 14-01-2025, 22:02:20
    #4
    hocam function içine alıp header yazan yerlerde function çalıştırmayı dener misiniz? chatgptden bi yazdırın bide öyle deneyin
  • 14-01-2025, 22:04:18
    #5
    function redirectTo($url, $status = null, $message = null) {
        // Eğer status ve message varsa, URL'ye ekle
        if ($status !== null && $message !== null) {
            $url .= '?status=' . urlencode($status) . '&message=' . urlencode($message);
        }
        // Header yönlendirmesini yap
        header('Location: ' . $url);
        exit; // Yönlendirme sonrası işlem yapmamak için exit ekleyin
    }
    require_once '../include/functions.php';
    session_start();
    $userID = $_SESSION['userid'];
    
    if ($_SERVER['REQUEST_METHOD'] === 'POST') {
        $imageResult = uploadFile($_FILES['image-file'], '../assets/uploads/images/', $productSlug);
        if (!$imageResult['status']) {
            // Hata durumunda yönlendirme
            redirectTo('../upload-work.php', 'error', $imageResult['message']);
        }
    
        // Dosya yükleme
        $fileResult = uploadFile($_FILES['file-upload'], '../assets/uploads/files/', $productSlug);
        if (!$fileResult['status']) {
            // Hata durumunda yönlendirme
            redirectTo('../upload-work.php', 'error', $fileResult['message']);
        }
    }
  • 14-01-2025, 22:13:36
    #6
    pekmezcimuzo adlı üyeden alıntı: mesajı görüntüle
    function redirectTo($url, $status = null, $message = null) {
        // Eğer status ve message varsa, URL'ye ekle
        if ($status !== null && $message !== null) {
            $url .= '?status=' . urlencode($status) . '&message=' . urlencode($message);
        }
        // Header yönlendirmesini yap
        header('Location: ' . $url);
        exit; // Yönlendirme sonrası işlem yapmamak için exit ekleyin
    }
    require_once '../include/functions.php';
    session_start();
    $userID = $_SESSION['userid'];
    
    if ($_SERVER['REQUEST_METHOD'] === 'POST') {
        $imageResult = uploadFile($_FILES['image-file'], '../assets/uploads/images/', $productSlug);
        if (!$imageResult['status']) {
            // Hata durumunda yönlendirme
            redirectTo('../upload-work.php', 'error', $imageResult['message']);
        }
    
        // Dosya yükleme
        $fileResult = uploadFile($_FILES['file-upload'], '../assets/uploads/files/', $productSlug);
        if (!$fileResult['status']) {
            // Hata durumunda yönlendirme
            redirectTo('../upload-work.php', 'error', $fileResult['message']);
        }
    }
    Yardımın için teşekkürler hocam sorun başka yerdeymiş hallettim eline emeğine sağlık, bir sigara içtim sorun halloldu

    Konu Kilitlenebilir.
  • 14-01-2025, 22:13:59
    #7
    header("Location: upload-work.php"); kullanın.
  • 14-01-2025, 22:21:42
    #8
    DemirDruid adlı üyeden alıntı: mesajı görüntüle
    Yardımın için teşekkürler hocam sorun başka yerdeymiş hallettim eline emeğine sağlık, bir sigara içtim sorun halloldu

    Konu Kilitlenebilir.
    hocam cevabını burayada yazarsan aynı sorunu yaşayanlar yararlanabilir.