- Home
- Categorie
- Coding e Sistemistica
- PHP
- Problema script php e upload immagini
-
Problema script php e upload immagini
Ciao a tutti sono tronato ho nuovamente un problema questa volta con il file upload.php, che fà correttamente l'upload del file crea la cartella desiderata ma l'immagine non viene inserita nella cartella creata:
Codice db.php
[php]<?php
// Connessione al DB
$host =
$user =
$pass =
$data =
$cn = @mysql_connect($host,$user,$pass) or die (mysql_error());
$sl = @mysql_select_db($data) or die (mysql_error());// Cartella fisica in cui andremo ad inserire le immagini.
// Va creata nella stessa posizione dove si trovano i file .php$path_img = mkdir("upload",0700); // creo la cartella upload e regolo i permessi
?>[/php]Ora il codice di upload.php
[php]
<?php
if(isset($_POST['Submit'])){
// faccio un po' di inclusioni...
@include 'funzioni/miniature.php';@require 'funzioni/db.php';
// 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']);// recupero i dati dal form $titolo = @addslashes($_POST['titolo']); $descrizione = @addslashes($_POST['descrizione']); $nome = @addslashes($_FILES['imagefile']['name']); $path = $path_img . stripslashes($nome); $tipo = @addslashes($_FILES['imagefile']['type']); // creo la miniatura @makeThumb($path_img,$path,$nome,$tipo); // aggiorno il database $query = "INSERT INTO images (Titolo,Descrizione,Nome,Tipo) VALUES('$titolo','$descrizione','$nome','$tipo')"; $res = @mysql_query($query) or die (mysql_error()); @mysql_close($cn); // Stampo a video un po' di informazioni echo "Nome: ".$_FILES['imagefile']['name']."<br />"; echo "Dimensione: ".$_FILES['imagefile']."<br />"; echo "Tipo: ".$_FILES['imagefile']['type']."<br />"; echo "Copia eseguita con successo.";
}else{
// stampo un messaggio di errore nel caso in cui il file sia di un formato non consentito
echo "Impossibile eseguire l'upload.";
}
}
?>
[/php]
-
Ciao gabriele1986,
intanto nella funzione mkdir dovresti impostare i permessi della cartella a 777.
Dopo verifica che i permessi siano realmente impostati a 777, in quanto a seconda della configurazione del server impostare i permessi delle cartelle con questa procedura potrebbe non essere possibile.
In seguito utilizzi la variabile che non contiene il percorso di upload bensi il valore restituito dalla funzione mkdir, quindi tenti di copiare nella cartella sbagliata.Ti sconsiglio l'utilizzo delle @ che ti nascondono gli errori e ovviamente non riesci a capire dove sono, ultimamente usarle sta diventando una moda, niente di più sbagliato...
-
Soto tornato ho provato sostituendo
$path_img = mkdir("upload",0700); $path_img = "c://programmi/EASYPHP35/sito_personale/portfolio/upload"
Ma nemmeno così le immagini sono visibili
-
Devi fare:
[php]
$path_img = mkdir("upload",0777);[/php]
-
Ho riprovato come hai detto tu ma non mi visualzza le immagini l'upload avviene correttamente ma anzichè caricare l'immagine nella cartella creata viene caricata nella cartella principale del sito web.
-
Devi modificare il percorso di destinazione della funzione copy.
-
Grazie ora funziona in parte ma non crea le miniature.
-
Stai passando il percorso corretto dell'immagine alla funzione makeThumb?
-
Ecco il codice della funzione per le migniature
<?php function makeThumb($path_img,$pic,$n,$t){ @list($width, $height, $type, $attr) = @getimagesize($pic); $max_w = 100; $max_h = 200; $ratio = @min($max_w/$width,$max_h/$height); // Verifico che l'immagine originale sia più grande delle dimensioni massime 100*100pxl if ($ratio < 1){ // Individuo le nuove dimensioni da assegnare all'immagine $w = @floor($ratio*$width); $h = @floor($ratio*$height); // creo una nuova immagine con le dimensioni appena calcolate $thumb = @imagecreatetruecolor($w,$h); if ($t == 'image/jpeg'){$temp = @imagecreatefromjpeg($pic);} elseif ($t == 'image/gif'){$temp = @imagecreatefromgif($pic);} elseif ($t == 'image/png'){$temp = @imagecreatefrompng($pic);} // ridimensiono l'originale e salvo nella cartella di destinazione @imagecopyresized($thumb,$temp,0,0,0,0,$w,$h,$width,$height); if ($t == 'image/jpeg'){@imagejpeg($thumb,"$path_img/tb_".$n, 75);} elseif ($t == 'image/gif'){@imagegif($thumb,"$path_img/tb_".$n, 75);} elseif ($t == 'image/png'){@imagepng($thumb,"$path_img/tb_".$n, 75);} } } ?>
-
Nella variabile $pic hai controllato che ti arrivi il percorso corretto? Che con il file che richiama la funzione, secondo me, hai fatto un pò di confusione.
-
Si arriva il percorso corretto lo script funzionava poi da un momento all'altro a smesso di visualizarmi le miniature.
-
Magari togli tutte le @ che nascondono gli errori, cosi vediamo che errori genera e facciamo prima.
-
Tolte tutte le @ non genere nessun errore ma non mostra le miniature che non sia colpa di easyphp?