php
  • validation
  • 2014-01-28 47 views 0 likes 
    0

    我想使用PHP動態驗證此表單,因此每個文件都會得到相同的驗證,而不是隻驗證一個文件。下面是我的代碼,試圖更好地解釋這一點。PHP動態循環驗證

    這是爲用戶輸出多個<input type="file" />字段的for循環。

    $items = sanitize($_GET['item']); 
    
    for($i=1; $i<=$items; $i++) { 
        echo $item = '<input type="file" name="photo'. $i .'" />'; 
    } 
    

    這是我不知道如何在for循環完成這個驗證每個字段這些字段

    $file_size = $_FILES['photo1']['size'];  
    if($file_size > 10485760) { 
          echo 'Photo 1 is too large. Maximium file size is 10MB.'; 
    } 
    

    的一個驗證。這是我到目前爲止所嘗試的。

    if($file_size.$i > 10485760) { 
    echo 'Photo '. $i .' is too large. Please choose a smaller file.'; 
    } 
    

    雖然這不起作用。請有人可以幫我解決這個問題嗎?

    提前許多感謝,哈利

    +0

    編號變量是一個壞習慣 - 使用數組代替:name =「photo [$ i]」。 –

    回答

    0

    數組鍵可以是動態的:

    for ($i = 1; $i <= $some_limit; $i++) { 
        $size = $_FILES["photo{$i}"]['size']; 
        if ($size > ...) { etc... } 
    } 
    

    與您$size . $i,你會採取的大小第一個文件,例如1024字節,並將其與$ i值連接,例如, 1024 . 2並結束於10242

    0

    試着這麼做:

    foreach ($_FILES as $id => $details) { 
        $size = $details['size']; 
        # validate... 
    } 
    
    0

    輸入名稱可以帶方括號。當提交表單時,輸入字段可以作爲數組訪問。如:

    HTML表單:

    <input type="file" name="photo[]"> 
    <input type="file" name="photo[]"> 
    <input type="file" name="photo[]"> 
    

    PHP:

    foreach($_FILES['photo'] as $key => $p) { 
    $file_size = $p['size'];  
    if($file_size > 10485760) { 
        echo "Photo $key is too large. Maximium file size is 10MB."; 
    } 
    } 
    

    這應該工作。謝謝。

    相關問題