Salve sto scrivendo uno script per l'upload di immagini che una volta caricate sul server esse devono essere ridimensionate e poi cancellate.. mantenendo xo le miniature.
Questo è il codice
Codice PHP:
<?php
ini_set("display_errors", "1");
global $dir, $conn, $prefix;
// Includo le funzioni utili per le news
require_once($dir['libs'] . 'news.functions.inc');
function formIco($ok = NULL) {
echo '
<div id="wrap">
<ul class="menu">
[*][url="#"]Carica Img[/url]
<ul>
[*]
<form name="form1" method="post" action="' . $_SERVER['PHP_SELF'] . '?' . $_SERVER['QUERY_STRING'] . '" enctype="multipart/form-data">
<input type="file" name="imagefile">
' . $ok . '
<input type="submit" name="Submit" value="Carica">
</form>
[/list]
[/list]
</div>
';
}
// Funzione d'elaborazione del form
// Verifico se sono stati inviati i dati dal form se no mostro il form cosi da essere completato
if(!isset($_POST['imagefile'])){
formIco();
} else {
// Destinazione nella quale devono essere spostati i file appena caricati
$destinazione = $dir['sources'] . "icone/";
// Rilevo l'estensione dell'immagine
switch ($_FILES['imagefile']['type']) {
case "image/gif":
copy ($_FILES['imagefile']['tmp_name'], $destinazione . $_FILES['imagefile']['name'])
or die ("Impossibile caricare il file sul server");
// Preparo la query per caricare il link all'immagine sul server
$insertImg = "INSERT INTO " . $prefix . "icone (percorso) VALUES ('" . $destinazione . $_FILES['imagefile']['name'] . "')";
break;
case "image/jpeg":
copy ($_FILES['imagefile']['tmp_name'], $destinazione . $_FILES['imagefile']['name'])
or die ("Impossibile caricare il file sul server");
// Preparo la query per caricare il link all'immagine sul server
$insertImg = "INSERT INTO " . $prefix . "icone (percorso) VALUES ('" . $destinazione . $_FILES['imagefile']['name'] . "')";
break;
case "image/png":
copy ($_FILES['imagefile']['tmp_name'], $destinazione . $_FILES['imagefile']['name'])
or die ("Impossibile caricare il file sul server");
// Preparo la query per caricare il link all'immagine sul server
$insertImg = "INSERT INTO " . $prefix . "icone (percorso) VALUES ('" . $destinazione . $_FILES['imagefile']['name'] . "')";
break;
default:
$errore = "Il tipi di file accettati sono:
JPG, JPEG, GIF e PNG.";
formIco($errore);
$insertImg = "";
break;
}
// Eseguo la verifica x stabilire se l'immagine non è già presente nel database
$ext = explode(".", basename($_FILES['imagefile']['name']));
$query = "SELECT * FROM " . $prefix . "icone WHERE sezione = '" . $destinazione . $ext[0] . "_ico" . $ext[1] . "'";
$result_verify = mysql_query($query) or die ("Errore durante la query di verifica!");
$count = mysql_num_rows($result_verify);
// Eseguo la query se non è vuota o se l'img non è già nel database
if ($count != FALSE) {
formIco("Immagine già presente nel database!");
exit();
} else if ($insertImg != "") {
$result = $conn->query($insertImg);
if($result !== TRUE) {
$errore = 'Errore durante l\'inserimento.';
formIco($errore);
exit();
}
}
// Ricavo il percorso dell'ultimo file inserito
$percorso = "SELECT percorso FROM " . $prefix . "icone WHERE percorso = '" . $destinazione . $_FILES['imagefile']['name'] . "' LIMIT 1";
// Lo invio alla funzione che crea la miniatura e poi elimina il file inserendo nel db il link alla miniatura
thumb($percorso, 151, 70);
// Stampo nel form l'indicaione dell'avvenuto upload dell'immagine
$ok = "
<span style=\"text-transform: uppercase\">" . $_FILES['imagefile']['type'] . "</span> caricata!";
$ok .= "
Nome: [b]" . $_FILES['imagefile']['name'] . "[/b]";
formIco($ok);
}
?>
Questo è il file dove c'è il form e l'eleaborazione di esso.. di seguito posto la funzione x la thumbail
Codice PHP:
// Creazione delle miniature o thumbails
function thumb($source_file, $size, $quality) {
global $prefix;
// Creo la destinazione della miniatura
$ext = explode(".", basename($source_file));
$output_file = dirname($source_file).'/'.$ext[0].'_ico.'.$ext[1];
$success = false;
list($width, $height) = getimagesize($source_file);
$new_width = intval(($width * $size) / max($width, $height));
$new_height = intval(($height * $size) / max($width, $height));
// Rilevo l'estensione dell'immagine
switch ($ext[1]) {
// faccio lo switch a seconda dell'estensione
case "gif":
if ( $image_in = imagecreatefromgif($source_file) );
break;
case "png":
if ( $image_in = imagecreatefrompng($source_file) );
break;
default:
if ( $image_in = imagecreatefromjpeg($source_file) );
}
{
if ( $image_out = imagecreatetruecolor($new_width, $new_height) ) {
imagecopyresampled($image_out, $image_in, 0, 0, 0, 0, $new_width, $new_height, $width, $height);
switch ($ext[1]) {
// faccio lo switch a seconda dell'estensione
case "gif":
if ( imagegif($image_out, $output_file, $quality) );
break;
case "png":
if ( imagepng($image_out, $output_file, $quality) );
break;
default:
if ( imagejpeg($image_out, $output_file, $quality) );
}
{
$output_file = str_replace("\\", "/", $output_file);
$sql_thumb = "UPDATE {$prefix}icone SET percorso = '$output_file' WHERE percorso = '$source_file'";
$result = mysql_query($sql_thumb) or die(mysql_error());
$success = true;
}
imagedestroy($image_out);
}
imagedestroy($image_in);
// Elimino l'immagine dopo la creazione della miniatura
if (unlink($source_file) != TRUE) {
echo "Errore nell'eliminazione dell'immagine sorgente";
}
}
return $success;
}
Il codice non riporta errori.. cioè carico l'immagine nel form.. ricarica la pagina ma non succede nulla.. non viene nemmeno caricata sul server l'immagine e nemmeno il link nel db viene inserito.. cosa sbaglio?