• 24-10-2019, 00:20:43
    #1
    Basit bir resim upload scripti var, resimi seçip yükle butonuna bastıktan sonra yükleme tamamlanıyor ancak o sayfadan çıkmadan f5 butonuna her bastığımızda resim farklı isimle tekrar yükleniyor. Bu sorun başka resim upload sitelerinde var mı diye denedim var ancak şöyle çözüm sağlamışlar resimi yükledikten sonra aynı sayfaya 3 kez f5 attıktan sonra 1-2 dakika sonra tekrar deneyin falan diyor. Bende aynı şekil bir limit koymak istiyorum nasıl yapabilirim yardım edebilecek var mı http://prntscr.com/pn9kbm

    <?php
    function uploadFile ($file_field = null, $check_image = false, $random_name = false) {
    
    //Config Section
    //Set file upload path
    $path = 'uploads/'; //with trailing slash
    //Set max file size in bytes
    $max_size = 1000000;
    //Set default file extension whitelist
    $whitelist_ext = array('jpeg','jpg','png','gif');
    //Set default file type whitelist
    $whitelist_type = array('image/jpeg', 'image/jpg', 'image/png','image/gif');
    
    //The Validation
    // Create an array to hold any output
    $out = array('error'=>null);
    
    if (!$file_field) {
    $out['error'][] = "Please specify a valid form field name";
    }
    
    if (!$path) {
    $out['error'][] = "Please specify a valid upload path";
    }
    
    if (count($out['error'])>0) {
    return $out;
    }
    
    //Make sure that there is a file
    if((!empty($_FILES[$file_field])) && ($_FILES[$file_field]['error'] == 0)) {
    
    // Get filename
    $file_info = pathinfo($_FILES[$file_field]['name']);
    $name = $file_info['filename'];
    $ext = $file_info['extension'];
    
    //Check file has the right extension
    if (!in_array($ext, $whitelist_ext)) {
    $out['error'][] = "Invalid file Extension";
    }
    
    //Check that the file is of the right type
    if (!in_array($_FILES[$file_field]["type"], $whitelist_type)) {
    $out['error'][] = "Invalid file Type";
    }
    
    //Check that the file is not too big
    if ($_FILES[$file_field]["size"] > $max_size) {
    $out['error'][] = "File is too big";
    }
    
    //If $check image is set as true
    if ($check_image) {
    if (!getimagesize($_FILES[$file_field]['tmp_name'])) {
    $out['error'][] = "Uploaded file is not a valid image";
    }
    }
    
    //Create full filename including path
    if ($random_name) {
    // Generate random filename
    $tmp = str_replace(array('.',' '), array('',''), microtime());
    
    if (!$tmp || $tmp == '') {
    $out['error'][] = "File must have a name";
    }
    $newname = $tmp.'.'.$ext;
    } else {
    $newname = $name.'.'.$ext;
    }
    
    //Check if file already exists on server
    if (file_exists($path.$newname)) {
    $out['error'][] = "A file with this name already exists";
    }
    
    if (count($out['error'])>0) {
    //The file has not correctly validated
    return $out;
    }
    
    if (move_uploaded_file($_FILES[$file_field]['tmp_name'], $path.$newname)) {
    //Success
    $out['filepath'] = $path;
    $out['filename'] = $newname;
    return $out;
    } else {
    $out['error'][] = "Server Error!";
    }
    
    } else {
    $out['error'][] = "No file uploaded";
    return $out;
    }
    }
    
    
    if (isset($_POST['submit'])) {
    $file = uploadFile('file', true, true);
    if (is_array($file['error'])) {
    $message = '';
    foreach ($file['error'] as $msg) {
    $message .= '<p>'.$msg.'</p>';
    }
    } else {
    $message = "File uploaded successfully".$newname;
    }
    echo $message;
    }
    ?>
    
    <form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post" enctype="multipart/form-data" name="form1" id="form1">
    <input name="file" type="file" id="imagee" />
    <input name="submit" type="submit" value="Upload" />
    </form>
  • 24-10-2019, 00:25:25
    #2
    daha kısa bir çözüm üreteyim size resim yükleme işlemi başarılı ise location ile resim yükleme sayfasına tekrar yönlendirin böylelikle form elemanları boşalacak ve f5 işe yaramayacak, diğer yöntem ise kullanıcının ip adresini alırsınız yükletme yapmadan önce sorgulayip araya zamanı koyup ona göre ekleme işlemi yapabilirsiniz
  • 24-10-2019, 00:27:53
    #3
    Tüm post işlemlerinizden sonra yönlendirme işlemi yapmalısınız.

    $message = "File uploaded successfully".$newname;
    Satırından sonra
    header("Location: ?");
    kodu ile yönlendirme yaparsan sorun kalmaz.
  • 24-10-2019, 00:30:39
    #4
    yahyaaydin adlı üyeden alıntı: mesajı görüntüle
    Tüm post işlemlerinizden sonra yönlendirme işlemi yapmalısınız.

    $message = "File uploaded successfully".$newname;
    Satırından sonra
    header("Location: ?");
    kodu ile yönlendirme yaparsan sorun kalmaz.
    Hocam denedim, Bu sayfa çalışmıyor HTTP ERROR 500 hatası aldım
    edit ; koymamışım düzeldi
  • 24-10-2019, 00:31:01
    #5
    Başka bir öneri de ben sunmak isterim. Ajax ile post işlemini gönderin id yi çevirdikten sonra gelen id veya idler ile resim detaylarına ulaşabileceği sayfaya yönlendirin. Hızlıresim gibi yani

    Ajax Örnek

    https://www.w3schools.com/jquery/jqu...x_get_post.asp

    Not:Post ile form gönderdikten sonra yönlendiğiniz sayfada yenileme yaparsanız ilk başta göndermiş olduğunuz veriler ile tekrar işlem yapar.
  • 24-10-2019, 00:36:10
    #6
    çözüm önerileriniz için çok teşekkürler ancak bunları yapabilecek kadar php bilgisine sahip değilim, konumdaki script örneğine eğer yapıp atabilecek biri varsa oradan yola çıkarak devam etmek istiyorum
  • 24-10-2019, 00:55:37
    #7
    Resim ismini atadığınız değişkeni php session veya cookie ile saniye veya dakika bazda kayıt edin, resim yüklemeden öncede if ile sorgu kurun eğer seçilen dosya adı ile cookie veya session da ki isim eşleşiyorsa hata verdirin eşleşmiyorsa yükleyin.