PHP upload dati ed immagine

Giaz

Nuovo Utente
3 Ott 2017
6
0
1
40
Buonasera, ho questo codice che carica testo ed immagine... la parte testuale funziona mentre l'immagine non viene caricata, però il messaggio dice eseguito con successo. Grazie.

PHP:
<?php
//includiamo il file di configurazione
@include "../config/config.php";
// 1) settiamo la cartella in cui fare l'upload
$cartella_upload ="../img/immagini";  
// 2) settiamo un array in cui indichiamo il tipo di file che consentiamo l'upload
// in questo esempio solo immagini  
$tipi_consentiti = array("gif","png","jpeg","jpg");    
// 3) settiamo la dimensione massima del file (1048576 byte = 1Mb)
$max_byte = 50000000;  // 50mb
//valorizziamo le variabili con i dati ricevuti dal form
if(isset($_POST['submit']) and isset($_FILES["dati_file"])){
  
  if(isset($_POST['autore'])){
    $autore = addslashes($_POST['autore']);
  }
  if(isset($_POST['titolo'])){
    $titolo = addslashes($_POST['titolo']);
  }
  if(isset($_POST['articolo'])){
    $articolo = addslashes($_POST['articolo']);
  }
// verifichiamo che l'utente abbia selezionato un file
  if(trim($_FILES["dati_file"]["name"]) == '') {
    echo 'Non hai selezionato nessun file!';
      }
// verifichiamo che il file è stato caricato
   else if(!is_uploaded_file($_FILES["dati_file"]["tmp_name"]) or $_FILES["dati_file"]["error"]>0) {
    echo 'Si sono verificati problemi nella procedura di upload!';
      }
// verifichiamo che il tipo è fra quelli consentiti
   else if(!in_array(strtolower(end(explode('.', $_FILES["dati_file"]["name"]))),$tipi_consentiti)) {
    echo 'Il file che si desidera uplodare non è fra i tipi consentiti!';
      }
// verifichiamo che la dimensione del file non eccede quella massima
   else if($_FILES["dati_file"]["size"] > $max_byte) {
    echo 'Il file che si desidera uplodare eccede la dimensione massima!';
      }
// verifichiamo che la cartella di destinazione settata esista
    else if(!is_dir($cartella_upload)) {
     echo 'La cartella in cui si desidera salvare il file non esiste!';
        }
// verifichiamo che la cartella di destinazione abbia i permessi di scrittura
    else if(!is_writable($cartella_upload)) {
     echo "La cartella in cui fare l'upload non ha i permessi!";
        }
// verifichiamo il successo della procedura di upload nella cartella settata
    else if(!move_uploaded_file($_FILES["dati_file"]["tmp_name"], $cartella_upload.$_FILES["dati_file"]["name"])) {
     echo 'Ops qualcosa è andato storto nella procedura di upload!';
      }
// altrimenti significa che è andato tutto ok
    else {
     echo 'Upload eseguito correttamente!';
      }
// popoliamo i campi della tabella articoli con i dati ricevuti dal form
$sql = "INSERT INTO articoli (art_autore, art_titolo, art_articolo, art_data, art_dati) VALUES ('$autore', '$titolo', '$articolo', now(), '$dati_file')";
// se l'inserimento ha avuto successo inviamo una notifica
    if (@mysql_query($sql) or die (mysql_error())){
     echo "Articolo inserito con successo.";
      }
    }else{
// se non sono stati inviati dati dal form mostriamo il modulo per l'inserimento
?>

<form enctype="multipart/form-data" action="insert_post.php" method="post">
Autore:<br>
<input name="autore" type="text" size="20"><br>
Titolo:<br>
<input name="titolo" type="text" size="30"><br>
Articolo:<br>
<textarea name="articolo" cols="40" rows="10"></textarea><br>
<input type="file" name="dati_file"><br>
<input name="submit" type="submit" value="Invia">
</form>
<?php } ?>
 
Ultima modifica di un moderatore:

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.042
149
63
PR
www.borgo-italia.it
ciao
prima alcune cose
non usare il silent @ gli errori vanno corretti non nascosti,
in php l'eleseif non si scrive else if ma elseif tutto attaccato
poi metti un var_dump per verificare se percorso e none file sono giusti
PHP:
//.......
// altrimenti significa che è andato tutto ok
    else {
     var_dump( $cartella_upload.$_FILES["dati_file"]["name"]);
     echo 'Upload eseguito correttamente!';
      }
//.......

inoltre quando scrivi codice racchiudilo tra gli appositi bccode o usa inserisci codice e sceli quale codice usare (generico o PHP o HTML)
 

Giaz

Nuovo Utente
3 Ott 2017
6
0
1
40
Ciao, grazie della risposta e dei consigli... fatte le modifiche, tolto il [email protected], errori nella scrittura e inserito il var_dump,
mostra il percorso dell'immagine ../img/immagini/nuovo.jpg ed il solito messaggio: Upload eseguito correttamente!Articolo inserito con successo.
 

jonnino2004

Utente Attivo
23 Mag 2007
86
3
8
como
www.quizandoceffee.com
ciao
ho provato il tuo script in locale, modificando solo $cartella_upload per farla puntare a una mia cartella, e funziona correttamente.

alcuni consigli:
usa <input type="file" name="pic" accept="image/*"> lasciando cmq il controllo lato server
e sposterei lato client anche il controllo sugli altri campio del form
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.042
149
63
PR
www.borgo-italia.it
ciao @jonnino2004
se intendi spostare anche lato client sono d'accordo, ma solo lato client no.
secondo me i controlli lato server sono indispensabili perche meno aggirabili e, soprattutto, quando si da la possibilità di caricare qualcosa in una cartella (foto...) e nel db (testi...).
poi una piccola osservazione sul controllo delle immagini o altri (docx, pdf...): conviene controllare oltra all'estenzione (jpg o gif ...) anche il type (image/jpeg ...)
 

Giaz

Nuovo Utente
3 Ott 2017
6
0
1
40
Il problema di quello script è che nel campo "dati_file" nel database risulta vuoto, quindi non inserisce l'immagine e non posso richiamarla. ho provato anche varie modifiche alla struttura del db usando BLOB, varchar, etc etc...
Ho risolto modificando la logica dello script cosi, (datemi una vostra opinione):
$path_img = '../img/immagini/'; (settato nel config.php)
@makeThumb (funzione per le miniature, incluso con function.php)
e usando <?php echo $_SERVER['PHP_SELF']; ?> in action nel form, giusto per...


PHP:
<?php
//includiamo il file di configurazione
include "../config/config.php";
include('function.php');
//valorizziamo le variabili con i dati ricevuti dal form
if(isset($_POST['submit']) and isset($_FILES["imagefile"])){
 
  if(isset($_POST['autore'])){
    $autore = addslashes($_POST['autore']);
  }
  if(isset($_POST['titolo'])){
    $titolo = addslashes($_POST['titolo']);
  }
  if(isset($_POST['articolo'])){
    $articolo = addslashes($_POST['articolo']);
  }
  if(isset($_FILES['imagefile']['name'])){
    $nome = addslashes($_FILES['imagefile']['name']);
  }
  if(isset($_FILES['imagefile']['type'])){
    $tipo = addslashes($_FILES['imagefile']['type']);
  }

    $path = $path_img . stripslashes($nome);
 
// Creo una array con i formati accettati
  $tipi_consentiti = array("image/gif","image/jpeg","image/png");
// verifico che il formato del file sia tra quelli accettati
  if (@in_array($_FILES['imagefile']['type'], $tipi_consentiti)){
// copio il file nella cartella delle immagini
  @copy ($_FILES['imagefile']['tmp_name'], $path_img . $_FILES['imagefile']['name']);
// creo la miniatura
  @makeThumb($path_img,$path,$nome,$tipo);
}
// popoliamo i campi della tabella articoli con i dati ricevuti dal form
$sql = "INSERT INTO articoli (art_autore, art_titolo, art_articolo, art_data, nome, tipo) VALUES ('$autore', '$titolo', '$articolo', now(), '$nome','$tipo')";
// se l'inserimento ha avuto successo inviamo una notifica
    if (@mysql_query($sql) or die (mysql_error())){
     echo "Articolo inserito con successo.";
      }
    }else{
// se non sono stati inviati dati dal form mostriamo il modulo per l'inserimento
?>

<form enctype="multipart/form-data" action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
Autore:<br>
<input name="autore" type="text" size="20"><br>
Titolo:<br>
<input name="titolo" type="text" size="30"><br>
Articolo:<br>
<textarea name="articolo" cols="40" rows="10"></textarea><br>
Immagine:<br />
<input type="file" name="imagefile"><br>
<input name="submit" type="submit" value="Invia">
</form>
<?php } ?>
 
Ultima modifica:
Discussioni simili
Autore Titolo Forum Risposte Data
L Passare ad uno script PHP i dati di un form incluso l'upload di un'immagine Ajax 0
L Upload di un'immagine all'interno di un database usando php PHP 6
S [PHP] Upload stesso file PHP 14
F [PHP] Informazioni upload PHP 11
G [PHP] upload file in server: percorso cartella PHP 2
M Upload 4 file php PHP 11
D [PHP] Upload intera cartella PHP 2
felino [PHP] Uploadify: upload immagini PHP 0
M [PHP] Nome file, upload e rinominare PHP 2
M [PHP] upload di un file esistente overwrite PHP 1
N [PHP] Test per l'upload di file attraverso un bot Telegram PHP 2
L [PHP] problema con upload e javascript (upload multiplo) Javascript 2
L [PHP] upload con errore PHP 2
V [PHP] Upload Excel in db PHP 0
jailbait [PHP] Upload immagine e stampa a schermo PHP 0
F [PHP] Validare form prenotazione appuntamento tattoo con upload image PHP 0
D [PHP] Upload encrypt image PHP 0
C [PHP] Problema upload file (multiplo) PHP 1
P [PHP] Upload multiplo PHP 4
N [PHP] Problema upload immagini wordpress PHP 2
S [PHP] Upload file... PHP 6
giancadeejay [PHP] Aggiornare DB tramite UPLOAD file .csv PHP 39
MarcoGrazia [PHP] Upload e successiva visualizzazione immagini in DB PHP 3
V [PHP] upload di file in cartella e sua sicurezza PHP 137
S PHP: Aiuto con upload immagini che si auto tuotano PHP 24
C [PHP] Upload immagine in un form con target _blank: non funziona PHP 7
V File upload.php della guida, ma ha un errore PHP 8
A Upload multiplo di immagini in PHP PHP 3
francesco7 [Problema] esecuzione script Upload file in php PHP 0
I upload file php / javascript / mysql PHP 0
R upload file php PHP 5
L [php] upload controllo dimensione immagine PHP 8
F upload foto in php?????? PHP 2
R upload e ridimensionamento immagini in php PHP 0
R upload e ridimensionamento immagini in php PHP 1
L [PHP] Upload immagini e ridimensionamento automatico PHP 9
N [RISOLTO] Upload jpeg e pdf in folder (PHP) PHP 16
K [PHP] multi upload immagine da form PHP 60
N problema script php mysql multi upload immagini PHP 31
helpdesk Gif agli eventi di php Upload PHP 6
L [PHP e FTP upload] controllo file allegato PHP 6
neo996sps [PHP + MySQL + Server Linux] Upload semi riuscito e query non eseguite PHP 2
novello88 PHP upload file PHP 1
Y [PHP/MySQL] Upload PDF PHP 3
O PHP ecommerce > da un sito funzionante > duplicazione riuscita ma non upload immagini PHP 19
B [PHP - MySQL] Upload di un File PHP 6
B upload con resize in php PHP 5
M UPLOAD File in PhP PHP 3
SolidSnake4 miglior script per l'upload di immagini con php su DB PHP 5
L Upload Form PHP PHP 18

Discussioni simili