PDA

View Full Version : [PHP] Controllo server-side su form dinamico


Ludo237
04-05-2011, 15:33
Ciao a tutti. :ciapet:
Sto provando a realizzare, a scopo personale ed educativo in vista dell università per l'anno prossimo :cry: , un controllo sui file caricati da un utente via form.
la cosa è abbastanza banale se si pensa ad un form statico si può effettuare tranquillamente cosi

if(!is_uploaded_file($_FILES['img_upload']['tmp_name']))
{
$check = false ;
echo "non hai caricato l'immagine-.-" ;
}


Il mio problema sorge quando il form non è statico ma dinamico.. cioè tramite un tastino (un +) ho creato uno script Jquery che inserisce nel form un nuovo campo per caricare un nuovo file .. questo si può fare N volte, anche se il limite massimo imposto dal mio script per ora è 10.
il campo è questo

<div class="input">
<label class="new_etichetta_req">File:</label>
<input type="file" name="img_upload[]" class="img_prs" value=""/>
</div>

e ogni volta che si schiaggia il tastino + del mio form si aggiunge un campo uguale identico a quello sopra citato.
io riesco a maneggiare tutti i file caricati e smazzarli nella/e cartella/e che voglia PERO' non riesco a fare il controllo del campo obbligatorio perchè, ovviamente se uso un controllo come

if(!is_uploaded_file($_FILES['img_upload']['tmp_name']))
{
$check = false ;
echo "non hai caricato l'immagine-.-" ;
}


Mi da errore dicendo che la funzione is_uploaded_file si aspetta una string e non un array...

come posso effettuare questo controllo? sono stato chiaro:doh: :D ?

Ludo237
04-05-2011, 15:51
Risolto...
Posto la soluzione se qualche altro utente un giorno dovrà affrontare il problema

in jquery io creavo il campo cosi

$("#add").click(function(e){
var name = $(".img_prs").size() + 1 ;
//alert($("#times").val()) ;
if(name == 10)
{
alert("Hai raggiunto il massimo di file che puoi caricare contemporaneamente...") ;
e.preventDefault() ;
}
else
{
$('<div class="input"> <label class="new_etichetta_req">File:</label><input type="file" name="img_presentazione[]" class="img_prs" value="" /> </div>').appendTo('#fieldset') ;
$("#times").val(name) ;
}
}) ;


ho realizzato che bastava creare un campo hidden (Times...) con value uguale al numero di campi per caricare file presenti nel form
poi, in php, controllo tramite un ciclo

$volta = $_POST['times'] ;
for($i=1; $i<=$volta ; $i++)
{
if(!is_uploaded_file($_FILES['img_presentazione']['tmp_name'][$i-1]))
{
$check = false ;
$errori .= "<li>Per creare l'album devi almeno inserire un immagine. il campo è obbligatorio</li>" ;
}
}