File upload.php della guida, ma ha un errore

VAik

Utente Attivo
16 Apr 2016
117
3
18
Ciao a tutti ragazzi

sto studiano la guida PHP ed in particolare la lezione "Gestire gli upload con PHP".

Stavo facendo una prova ad utilizzare tutti i costrutti di controllo descritti nella guida, ma il file mi presenta un errore alla fine.

Potete dirmi cosa è?

mi spiace tantissimo chiedere aiuto per una cosa del genere, ma non so cosa fare

PHP:
<html>

<head><title>Pagina recupero info, in particolare è una pagina di controllo el file uplodato</title></head>

<body>

<h1>questa è una pagina web con estensione .php </h1>
<p><font color = "red">recuperà il file per poi metterlo nella cartella che noi abbiamo <br>predisposto per ospitare i file uploadati </font></p>

<h2>il form che ho creato è abbastanza complesso con vari campi</h2>

<?php

/* Per prima cosa verifico che il file sia stato effettivamente caricato!!
 * Dopo aver verifiato che la variabile $_FILES è settata, uso
 * is_uploaded_file() per verificare se effettivamente è stato trasferito 
 * un file.
 */
if (!isset($_FILES['userfile']) || !is_uploaded_file($_FILES['userfile']['tmp_name'])) {
  echo 'Non hai inviato nessun file...';
  exit;    
}

/* Limito la dimensione massima a 4MB.
 * E' un controllo piuttosto comune :consiste nel verificare se il file 
 * caricato dall'utente non sia superiore ad una dimensione massima:
 */
if ($_FILES['userfile']['size'] > 4194304) {
	echo 'Il file è troppo grande!';
	exit;
}


/* Talvalta può essere utile verificare se il file inviato dall'utente
 *  mediante il modulo di upload sia già presente all'interno della nostra 
 * cartella di destinazione 
 */
$target_file = '/var/www/myupload/' . $_FILES['userfile']['name'];
if (file_exists($target_file)) {
	echo 'Il file esiste già';
	exit;
}


/* Un modo semplice per controllare il tipo di file caricato dall'utente 
 * consiste nell'effettuare una verifica sulla sua estensione.
 * Questo controllo è IMPORTANTE in termini di sicurezza: infatti, si potrebbe
 * caricare sul nostro server del codice malevolo che comprometterebbe
 * la sicurezza del nostro sito web
 */
$ext_ok = array('doc', 'docx', 'pdf');
$temp = explode('.', $_FILES['userfile']['name']);
$ext = end($temp);
if (!in_array($ext, $ext_ok)) {
	echo 'Il file ha un estensione non ammessa!';
	exit;
}

/*Un tipo di controllo molto comune consiste nel verificare se il tipo 
 * di file corrisponde a quello atteso. 
 * Se, ad esempio, abbiamo predisposto un modulo per il caricamento
 * di immagini è buona norma verificare che il file inviato
 * dall'utente sia effettivamente un file grafico * 
 */
$is_img = getimagesize($_FILES['userfile']['tmp_name']);
if (!$is_img) {
	echo 'Puoi inviare solo immagini';
	exit;



//percorso della cartella dove mettere i file caricati dagli utenti
$uploaddir = '/var/www/myupload/';



//Recupero il percorso temporaneo del file
$userfile_tmp = $_FILES['userfile']['tmp_name'];

//recupero il nome originale del file caricato
$userfile_name = $_FILES['userfile']['name'];

/*copio il file dalla sua posizione temporanea alla mia cartella upload
 * Uso la funzione move_uloaded_file per verificare se effettivamente è
 * stato spostato correttamente nella cartella di detinazione. * 
 * Nel primo caso la funzione restituisce TRUE, oppure FALSE
 */
if (move_uploaded_file($userfile_tmp, $uploaddir . $userfile_name)) {
  //Se l'operazione è andata a buon fine...
  echo 'File inviato con successo.';
}else{
  //Se l'operazione è fallta...
  echo 'Upload NON valido!'; 
}
?>


</body>
</html>
 
Ultima modifica di un moderatore:

VAik

Utente Attivo
16 Apr 2016
117
3
18
grazie ragazzi...era una parentesi graffa....scusate, ho risolto
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
visto che stai studiando, per verificare l'estenzione del file usa pathinfo fai prima
PHP:
<?php
//....
$estenzione=pathinfo($_FILES['userfile']['name'], PATHINFO_EXTENSION); 
//ti restituisce l'estenzione del file
$tipo=array('jpg','gif','png');//e altre estenzioni che ti interessano
//e fai la verifica con in_array
//....
?>
poi una cosa
tu verifichi prima che sia un file doc o docx o pdf e se non lo è dal l'exit
poi verifichi se è un immagine, quindi con estenzione o jpg o gif o png
ora se carichi un'immagine per prima cosa verifica che sia doc o docx o pdf e non essendolo esci, quindi un'immagine non te la carica

p.s.
usa il bccode php quando hai del codice php
 

VAik

Utente Attivo
16 Apr 2016
117
3
18
Grazie dei consigli

PHP:
<?php
//....
$estenzione=pathinfo($_FILES['userfile']['name'], PATHINFO_EXTENSION); 
//ti restituisce l'estenzione del file
$tipo=array('jpg','gif','png');//e altre estenzioni che ti interessano
//e fai la verifica con in_array
//....
?>

poi una cosa
tu verifichi prima che sia un file doc o docx o pdf e se non lo è dal l'exit
poi verifichi se è un immagine, quindi con estenzione o jpg o gif o png
ora se carichi un'immagine per prima cosa verifica che sia doc o docx o pdf e non essendolo esci, quindi un'immagine non te la carica

p.s.
usa il bccode php quando hai del codice php


che dovrei fare una cosa del genere???



PHP:
<?php
//....
$estenzione=pathinfo($_FILES['userfile']['name'], PATHINFO_EXTENSION); 
//ti restituisce l'estenzione del file

$ext_ok = array('doc', 'docx', 'pdf','png','jpeg','giff');
$temp = explode('.', $_FILES['userfile']['name']);
$ext = end($temp);
if (!in_array($ext, $ext_ok)) {
    echo 'Il file ha un estensione non ammessa!';
    exit;



?>
 
Ultima modifica:

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
circa, o usi il pathinfo o il sistema dell eplode.
o così
PHP:
<?php
//....
$ext_ok = array('doc', 'docx', 'pdf','png','jpeg','giff');
$temp = explode('.', $_FILES['userfile']['name']);
$ext = end($temp);
if (!in_array($ext, $ext_ok)) {
    echo 'Il file ha un estensione non ammessa!';
    exit;
}
//....
?>
oppure così
PHP:
<?php
//....
$ext_ok = array('doc', 'docx', 'pdf','png','jpeg','giff');
$ext=pathinfo($_FILES['userfile']['name'], PATHINFO_EXTENSION); 
if (!in_array($ext, $ext_ok)) {
    echo 'Il file ha un estensione non ammessa!';
    exit;
}
//....
?>
il secondo metodo usa meno codice
 

VAik

Utente Attivo
16 Apr 2016
117
3
18
Grazie per la risposta., cercherò di fare al termine della giuida qualche prova più concreta.

p.s.

Mi mancano 3 lezioni della guida php, devo dire che manca una cosa: la contestualizzazione delle cose. Mi piacerebbe poter fare un sito da zero a livello di php in modo da poter capire praticamente le cose affrontate in questa guida e quindi cosa fanno in maniera reale, ma soprattutto utile.
Solo questo del file upload mi sembra quella più contestualizzata, proprio perchè seguendo un corso base con un prof e leggendo un po' di php da altre fonti ho collegato un po' meglio che con gli altri argomenti
 

VAik

Utente Attivo
16 Apr 2016
117
3
18
la guida è presente su questo sito. non nel forum, ma ci arrivi tramite la homepage di mrwebmaster
 
Discussioni simili
Autore Titolo Forum Risposte Data
S [PHP] Upload stesso file PHP 14
G [PHP] upload file in server: percorso cartella PHP 2
M Upload 4 file php PHP 11
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
C [PHP] Problema upload file (multiplo) PHP 1
S [PHP] Upload file... PHP 6
giancadeejay [PHP] Aggiornare DB tramite UPLOAD file .csv PHP 39
V [PHP] upload di file in cartella e sua sicurezza PHP 137
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 e FTP upload] controllo file allegato PHP 6
novello88 PHP upload file PHP 1
B [PHP - MySQL] Upload di un File PHP 6
M UPLOAD File in PhP PHP 3
S Upload File in Php PHP 7
nicocade [help] upload file con php!!! PHP 1
L Modifica file upload in ASP Classic ASP 2
S Upload file senza doverlo selezionare PHP 2
G Upload file error Apache 0
R Modifica codice per l'upload di più file PHP 1
M [ASP] Upload file da form controllo Classic ASP 5
P Barra upload file jQuery 1
T [ASP] upload file Classic ASP 3
M Fare upload di file scegliendo la cartella di destinazione PHP 78
M rinominare file in upload PHP 3
Y script per upload file PHP 9
Devil-94 rimuovere i spazi del file in upload... PHP 1
R Problema upload file PHP 1
S Indicare una directory di destinazione per l'upload di un file PHP 1
M Errore nell'Upload di un file PHP 0
Nik Implementare script "upload file" nel proprio sito web... tramite google drive Javascript 1
D Upload file in cartella con progress bar PHP 6
P upload e rename file PHP 2
xone Form con campi input text e upload file PHP 4
A Upload in App Android (sfoglia file) Sviluppo app per Android 1
F Errore filezilla upload file Hosting 1
R upload multiplo di file PHP 7
F upload file PHP 1
M Upload di n solo file in due cartelle diverse PHP 4
C ridurre dimensione file immagine prima dell'upload Javascript 0
F Problema con upload di file PHP 1
P Upload file html speciale HTML e CSS 3
M Adattare script di "form mail con upload file" al mio form mail HTML! PHP 7
G UPLOAD con controllo esistenza file Classic ASP 0
M upload file con progress bar PHP 10
F pagina bianca upload file Joomla 0
A upload file PHP 14

Discussioni simili