Salve a tutti, ho un problema "strano" per il quale non riesco a far funzionare l'upload delle immagini in un progetto che sto sviluppando su Mac con l'ausilio di MAMP per i test.
Ho il seguente form html
che rimanda al seguente script php
Sembra che non prelevi proprio il file dal pc, infatti lo script da errore sempre all'istruzione if con is_uploaded_file() in tutti i test che ho fatto.
Ho provato anche a settare manualmente i permessi della cartella temp ma niente, ho provato lo script anche caricandolo direttamente al posto di un sito che gestisco su Linux ma niente, sempre lo stesso errore.
Ho controllato il php.info sia del MAMP che del sito e sembra tutto regolare, upload attivo, limite size e post size alto ecc....
Non capisco proprio dove sta l'errore o comunque il problema. Qulcuno riesce a darmi una mano???
Grazie in anticipo a tutti!!!!
Ho il seguente form html
HTML:
<div id="upform">
<form id="form" action="form.inc.php" method="post" enctype="multipart/form-data">
<fieldset>
<legend>Caricamento foto:</legend>
<label id="lbl">Seleziona il file <em>(jpg, jpeg o png)*</em><span style="font-size:0.4em"> CAMPO SEMPRE NECESSARIO!!!</span> :</label><br />
<input type="file" id="inpt" name="foto" value="" /><br /><br />
</fieldset>
<fieldset>
<legend>Le seguenti informazioni sono necessarie SOLO se si carica l'articolo nello shop:</legend>
<label id="lbl">Breve descrizione indicativa dell'oggetto:</label><br />
<input type="text" id="inpt" name="desc" placeholder="Descrizione indicativa" maxlength="150" /><br />
<label id="lbl">Indica il prezzo dell'oggetto:</label><br />
<input type="number" id="inpt" name="prezzo" /><br /><!-- mi sa che non prende la virgola -->
<label id="lbl">Indica la quantità disponibile:</label><br />
<input type="number" id="inpt" name="qta" /><br />
<label id="lbl">Scegli la categoria:</label><br />
<select id="inpt" name="cat">
<option value="abiti">Abiti</option>
<option value="giacche">Giacche</option>
<option value="sciarpe">Sciarpe</option>
<option value="cappelli">Cappelli</option>
</select>
</fieldset>
<fieldset>
<legend>Seleziona il tipo di caricamento necessario:</legend>
<input type="submit" id="upbutton" name="action" value="GALLERIA" />
<input type="submit" id="upbutton" name="action" value="SHOP" />
<input type="submit" id="upbutton" name="action" value="ENTRAMBI" />
</fieldset>
</form>
</div>
che rimanda al seguente script php
PHP:
// definizione directory di caricamento
define("GALLERY", "/gallery/");
define("SHOP", "/shop/".$cat."/");
chmod(GALLERY, 0777) or die ("Impossibile settare i permessi della cartella Gallery");
chmod(SHOP, 0777) or die ("Impossibile settare i permessi della cartella Shop");
// recupero informazioni form
$desc = trim(addslashes(htmlspecialchars($_POST['desc'], ENT_QUOTES, 'UTF-8')));
$prezzo = trim($_POST['prezzo']);
$qta = trim($_POST['qta']);
$cat = trim($_POST['cat']);
$prefisso = date(YmdHis);
// controllo se il file è stato caricato nella cartella temporanea del server
if (is_uploaded_file($_FILES['foto']['tmp_name']))){
// controllo il formato
if ($_FILES['foto']['type'] != "image/jpeg" || $_FILES['foto']['type'] != "image/pjpeg" || $_FILES['foto']['type'] != "image/jpg" || $_FILES['foto']['type'] != "image/png"){
// se non ci sono altri errori
if ($_FILES['foto']['error'] == 0){
// inizio le operazioni per l'upload
// nuovo nome del file
$oldname = htmlspecialchars(str_replace(" ", "_", $_FILES['foto']['name']), ENT_QUOTES, "UTF-8");
$newname = $prefisso.$oldname;
// se la scelta utente è Gallery
if (isset($_POST['action']) && $_POST['action'] == "GALLERIA"){
move_uploaded_file($_FILES['foto']['tmp_name'], GALLERY.$newname) or die("Impossibile spostare il file");
echo "Il file ".$_FILE['foto']['name']." è stato caricato correttamente in Galleria";
header('refresh:1; url=index.php?form');
}
// se la scelta utente è Shop
elseif (isset($_POST['action']) && $_POST['action'] == "SHOP"){
move_uploaded_file($_FILES['foto']['tmp_name'], SHOP.$newname) or die("Impossibile spostare il file");
//creo il file delle info
$newtxt = SHOP.$newname.".txt";
fopen($newtxt, 'w+') or die("Impossibile creare il file delle informazioni");
fwrite($newtxt, $desc."\n") or die("Impossibile scrivere nel file delle informazioni - descrizione");
fwrite($newtxt, $prezzo."\n") or die("Impossibile scrivere nel file delle informazioni - prezzo");
fwrite($newtxt, $qta) or die("Impossibile scrivere nel file delle informazioni - quantità");
fclose($newtxt);
echo "Il file ".$_FILE['foto']['name']." è stato caricato correttamente in Shop/".$cat."/";
header('refresh:1; url=index.php?form');
}
// se la scelta utente è Entrambi
elseif (isset($_POST['action']) && $_POST['action'] == "ENTRAMBI"){
move_uploaded_file($_FILES['foto']['tmp_name'], SHOP.$newname) or die("Impossibile spostare il file");
copy(SHOP.$newname, GALLERY.$newname) or die("Impossibile copiare il file");
// creo il file delle info
$newtxt = SHOP.$newname.".txt";
fopen($newtxt, 'w+') or die("Impossibile creare il file delle informazioni");
fwrite($newtxt, $desc."\n") or die("Impossibile scrivere nel file delle informazioni - descrizione");
fwrite($newtxt, $prezzo."\n") or die("Impossibile scrivere nel file delle informazioni - prezzo");
fwrite($newtxt, $qta) or die("Impossibile scrivere nel file delle informazioni - quantità");
fclose($newtxt);
echo "Il file ".$_FILE['foto']['name']." è stato caricato correttamente sia in Galleria che in Shop/".$cat."/";
header('refresh:1; url=index.php?form');
}
}
else{
// errore generico
die("Errore, impossibile caricare il file, codice errore : ".$_FILES["foto"]["error"]);
}
}
else{
die("Formato file non valido, solo JPG JPEG PNG");
}
}
else{
die("Si sono verificati errori durante il caricamento! <a href=\"index.php?form\">Riprova</a> \n errore : ".$_FILES["foto"]["error"]);
}
Sembra che non prelevi proprio il file dal pc, infatti lo script da errore sempre all'istruzione if con is_uploaded_file() in tutti i test che ho fatto.
Ho provato anche a settare manualmente i permessi della cartella temp ma niente, ho provato lo script anche caricandolo direttamente al posto di un sito che gestisco su Linux ma niente, sempre lo stesso errore.
Ho controllato il php.info sia del MAMP che del sito e sembra tutto regolare, upload attivo, limite size e post size alto ecc....
Non capisco proprio dove sta l'errore o comunque il problema. Qulcuno riesce a darmi una mano???
Grazie in anticipo a tutti!!!!