Kerede birden fazla dosya upload FOR döngüsü kullanarak Yüklenen düzgün doğrulamaz

0 Cevap php

Oldukça PHP için yeni ve ben şu anda birden çok yüklenenler doğrulamak için çalışıyorum, ama hiçbir şey çalışmış gibi görünüyor. Ben bulabileceğiniz hemen hemen her kaynak tükettik.

Ben FOR döngüsü bu oluyor biraz var üzgünüm. Aşağıdaki gibi benim kod:

function processForm() 
{ 

    for($i=0; $i < VAR_UPLOAD_FIELDS; $i++) 
    { 
        echo "Upload field $i "; 

        if(!empty($_FILES[file][size][$i])) 
        { 

        //********************* 
        //START OF TEST CODE FOR VALIDATION. 

        //*********************** 
            $fileName     = $_FILES[file][name][$i]; 

        // get file name (not including path) 
        $file_basename = substr($fileName, -4, strripos($fileName, '.')); 

        $file_ext = substr($file_basename, strripos($file_basename, '.')); 

        $file_ext = @substr($file_ext, 1); // remove dot 


        // check file type if needed 
        if (count($exts)) {    
            if (!in_array($file_ext[i], $exts)) 
          { 
            echo "Files of this type are not allowed for upload."; 
            break; 
          } 
        } 

                            $newLocation     = VAR_UPLOAD_DIRECTORY.$fileName; 
            $filesize = intval($_FILES["filename"]["size"]); 


            //***************************** 
            // Code to add information of uploads to database 
            //***************************** 

                if (DO_LOG) { 
  // Establish DB connection 
  $link = @mysql_connect(DB_HOST, DB_USERNAME, DB_PASSWORD); 
  if (!$link) { 
    $errors[] = "Could not connect to mysql."; 
    break; 
  } 
  $res = @mysql_select_db(DB_DATABASE, $link); 
  if (!$res) { 
    $errors[] = "Could not select database."; 
    break; 
  } 
  $m_ip = mysql_real_escape_string($_SERVER['REMOTE_ADDR']); 
  $m_size = $filesize; 
  $m_fname = mysql_real_escape_string($fileName); 
  $sql = "insert into test_uploads_log (log_filename,log_size,log_ip) values ('$m_fname','$m_size','$m_ip')"; 
  $res = @mysql_query($sql); 
  if (!$res) { 
    $errors[] = "Could not run query."; 
    break; 
  } 
  @mysql_free_result($res); 
  @mysql_close($link); 
} 
            //***************************** 
            // End of database code 
            //***************************** 



            //Files copied to location. 
            if(!copy($_FILES[file][tmp_name][$i],$newLocation)) 
            { 
                echo "<b>Failed - ".$_FILES[file][name][$i]." would not copy to ".$newLocation."</b> (Check your upload directory and permissions)"; 
            } 
            else 
            { 
                ###/ SUCCESS /### 

                #/ Stripping of VAR_BASE_DIRECTORY for better viewing and linking 
                // $urlShow = str_replace(VAR_BASE_DIRECTORY,'',$newLocation); 
                $urlShow = $newLocation;                      


                echo "<b> Uploaded successfully - <a href=\"$urlShow\" target=\"_blank\">$urlShow</a></b>"; 
            } 
        } 

        else 
        { 
            echo "<b>No file uploaded</b>"; 
        } 
        echo "<br />"; 
    } 
    return; 
} 

Şimdi dosyaları tarih, ve onların bilgilerini bir sorun olmadan döngü yinelenir İÇİN Bu aracılığıyla, veritabanına eklenir. Ancak konu bu kodu doğrulama biraz görmezden tutar neden bilmiyorum olmasıdır. Ben yukarıda bildirilen bir dizi var

$exts = array('dxf','dwg','pdf','sldrw','sldrt','bmp','txt');

Döngü tamamen göz ardı edilecek gibi görünüyor:

        // check file type if needed 
        if (count($exts)) {    
            if (!@in_array($file_ext[i], $exts)) 
          { 
            echo "Files of this type are not allowed for upload."; 
            break; 
          } 
        } 

Ben jpgs, JPEG, GIF, GIF, temelde bir şey ben kısıtlamak için çalışıyorum ve her şey hala ince yüklenenler yükledim. Hiçbir şey düzgün doğrulanır. Değerleri bile veritabanına eklenir. Herkes yanlış ne yapıyorum ışık tutabilecek? Ve neden yankı ve mola çağrılır?

Teşekkür ederim.

Daz.

0 Cevap