Problema upload immagini

Rikk73

Utente Attivo
7 Apr 2015
137
6
18
Arezzo
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
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&apos;oggetto:</label><br />
      <input type="text" id="inpt" name="desc" placeholder="Descrizione indicativa" maxlength="150" /><br />
      <label id="lbl">Indica il prezzo dell&apos;oggetto:</label><br />
	  <input type="number" id="inpt" name="prezzo" /><br /><!-- mi sa che non prende la virgola -->
      <label id="lbl">Indica la quantit&agrave; 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']." &egrave; 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&agrave;");
				fclose($newtxt);
				echo "Il file ".$_FILE['foto']['name']." &egrave; 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&agrave;");
				fclose($newtxt);
				echo "Il file ".$_FILE['foto']['name']." &egrave; 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!!!!
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.042
148
63
PR
www.borgo-italia.it
ciao
così a naso dai un occhio a questa riga
PHP:
<?php
    if ($_FILES['foto']['type'] != "image/jpeg" || $_FILES['foto']['type'] != "image/pjpeg" || $_FILES['foto']['type'] != "image/jpg" || $_FILES['foto']['type'] != "image/png"){
?>
gli stai dicendo
se il tipo di foto è DIVERSO DA image/jpeg o DIVERSO DA image/pjpeg....
fai l'upload
altimenti stampa "Formato file non valido, solo JPG JPEG PNG"
PHP:
<?php
    if ($_FILES['foto']['type'] == "image/jpeg" || $_FILES['foto']['type'] == "image/pjpeg" || $_FILES['foto']['type'] == "image/jpg" || $_FILES['foto']['type'] == "image/png"){
?>
cioe se l'estenzione è giusta fai l'up altrimenti no
 

Rikk73

Utente Attivo
7 Apr 2015
137
6
18
Arezzo
@borgo italia

Ottima osservazione......
ho effettuato la correzione e nel farlo mi sono accorto di una parentesi tonda di chiusura di troppo nella riga di is_uploaded_file.

adesso il caricamento funziona!!! tutto ok per quello, ma...
mi restituisce un errore fwrite() :
Warning: fwrite() expects parameter 1 to be resource, string given .....

premetto che ho modificato leggermente la definizione del nome da dare al file nuovo, comnque l'errore lo dava anche prima:

PHP:
//il resto del codice è uguale a quello gia postato
//creo il file delle info
$tmptxt1 = explode(".", $newname);
$tmptxt2 = implode("_", $tmptxt1);
$newtxt = SHOP.$tmptxt2.".xy";
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&agrave;");
fclose($newtxt);

a cosa si riferisce quel "param 1"?? ho omesso un parametro?
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.042
148
63
PR
www.borgo-italia.it
ciao
immagino che $newtxt contenga qualcosa di simile a testo.txt e
le varie $desc $prezzo $qta "bla bla bla...."
se è così
PHP:
<?php
//....
$risorsa=fopen($newtxt, 'w') or die("Impossibile creare il file delle informazioni");
fwrite($risorsa, $desc."\n") or die("Impossibile scrivere nel file delle informazioni - descrizione");
fwrite($risorsa, $prezzo."\n") or die("Impossibile scrivere nel file delle informazioni - prezzo");
fwrite($risorsa, $qta) or die("Impossibile scrivere nel file delle informazioni - quantit&agrave;");
fclose($risorsa); 
//...
?>
poi se puoi abbandona i file txt e fai (meglio) il lavoro usando un database come mysql
 

Rikk73

Utente Attivo
7 Apr 2015
137
6
18
Arezzo
ho fatto la correzione suggerita e funziona, devo vedere cosa e come scrive dentro il file comunque....

sono pienamente d'accordo su un db... ma non dipende da me! poco male pe me è tutta esperienza!

grazie qncora dei preziosi suggerimenti!!!
 
Discussioni simili
Autore Titolo Forum Risposte Data
N [PHP] Problema upload immagini wordpress PHP 2
F Problema con upload di immagini che superano 2MB PHP 14
A Problema con Upload immagini PHP 9
A problema con upload immagini multiple PHP 0
N problema script php mysql multi upload immagini PHP 31
A upload immagini problema PHP 3
G Problema con upload immagini e IE7 PHP 6
N Problema upload immagini! HELP! PHP 0
C problema upload immagini grandi con 4images Programmazione 0
L [PHP] problema con upload e javascript (upload multiplo) Javascript 2
C [PHP] Problema upload file (multiplo) PHP 1
R Problema upload file PHP 1
R Problema upload PHP 1
P Problema con lettura filesystem del client da server! Upload multiplo foto. PHP 5
francesco7 [Problema] esecuzione script Upload file in php PHP 0
L classe upload [Problema cartella] PHP 1
B Problema upload delle foto PHP 1
L problema upload: Strict Standards: Only PHP 2
F Problema con upload di file PHP 1
B Problema upload application/x-zip-compressed diventa erroneamente application/octet-stream PHP 0
L problema ftp upload su host windows PHP 9
N Problema upload iis7 Classic ASP 0
helpdesk Problema Upload non ridimensiona l'immagine PHP 4
B problema upload file PHP 3
C Problema nell'upload di un file PHP 4
R problema upload PHP 9
P Problema upload file PHP 2
V Problema con Pure Asp Upload Classic ASP 4
Y problema nell'upload di un'immagine PHP 7
S Problema upload immagine Classic ASP 4
D Problema nome file su upload Classic ASP 5
F Problema Upload file con Internet Explorer PHP 29
SolidSnake4 problema upload PHP 1
S Problema Dominio su Tiscali e upload con ADSL ALICE Domini 1
U Problema script upload file... :'( PHP 7
D problema con upload [Era: info] PHP 13
M Problema con l'upload PHP 0
V Problema Upload PHP 6
R Problema query con ricerca id numerico PHP 2
F Problema con risposta PHP 0
S problema con recupero dati tabella mysql PHP 2
Z Problema con il mio tp-l i nk Reti LAN e Wireless 0
I PROBLEMA: Sostituzione sito XAMPP E-Commerce 0
T problema data 30/11/-1 PHP 0
L Problema RAM con Tomcat 8 Apache 0
napuleone problema con sort e asort PHP 4
Y Problema incolonnamento tabella PHP 7
S problema salvataggio immagini Photoshop 0
Z Problema con INT MySQL PHP 1
Z Problema database MySQL con XAMPP PHP 0

Discussioni simili