Salve,
Siccome in quasi ogni sito che faccio, ho bisogno di un Uploader...per non dover modificare ogni volta i miei script, avevo intenzione di crearmi una classe per l'Upload dei file, in modo da velocizzare il lavoro... (Attenzione, non voglio link a classi già fatte, voglio farla io con le mie opzioni e strutturata come dico io)
Ho scritto qui il codice (file chiamato upload.class.inc.php):
Codice PHP:
<?php
class Uploader {
var $max_file_size = 0;
var $estensioni_consentite = array();
var $opzioni_upload = array();
function max_size($valore)
{
$this->max_file_size = $valore;
}
function estensioni_ok($array)
{
$this->estensioni_consentite = $array;
}
function opzioni_up($array)
{
$this->opzioni_upload = $array;
}
function upload_file($nome_campo_form, $cartella_upload)
{
$msg = 0; // se 0 estensione non consentita
$overwrite = 1; // se 0 rinomina
$nome_file = $_FILES[$nome_campo_form]['name'];
if($max_file_size != 0)
{
if($_FILES[$nome_campo_form]['size'] > $max_file_size)
{
die("Il File è troppo Grande!");
}
}
foreach($this->opzioni_upload as $key => $value)
{
if($key == 'lock_ext')
{
if($value == 1)
{
$file_split = explode(".",$nome_file);
$estensione = array_pop($file_split);
foreach($this->estensioni_consentite as $valore)
{
if($estensione == $valore)
{
$msg = 1;
}
}
} else {
$msg = 1;
}
}
if($key == 'overwrite')
{
if($value == 1)
{
$overwrite = 1;
} else {
$overwrite = 0;
}
}
}
if(is_uploaded_file($_FILES[$nome_campo_form]['tmp_name']))
{
if($overwrite == 0)
{
if(file_exists($cartella_upload.$nome_file))
{
$casnum = rand(0,9999999999);
$filenome = dividinome($nome_file);
$nome_file = $filenome.'('.$casnum.').'.$estensione;
}
}
if(move_uploaded_file($_FILES[$nome_campo_form]['tmp_name'], $cartella_upload.$nome_file))
{
print("Upload Riuscito!");
} else {
die("Errore nell'Upload del File");
}
} else {
die("Errore nell'Upload del File");
}
}
function dividi_nome($nome)
{
$fsplit = explode('.',$nome);
$vai = count($fsplit);
$i=0;
while($i<$vai - 1)
{
if($i==$vai - 2)
{
$nome.=$fsplit[$i];
} else {
$nome.=$fsplit[$i].'.';
}
$i++;
}
return $nome;
}
}
?>
il codice del form di prova è questo:
codice:
<html>
<head>
<title>Prova</title>
</head>
<body>
<form action='esempio.php' method='POST'>
<input type='file' name='userfile' />
<input type='submit' value='upload' />
</form>
</body>
</html>
il File esempio.php a cui mando i dati è questo:
Codice PHP:
<?php
include("libs/upload.class.inc.php");
$test = new Uploader();
$test->opzioni_up(array('lock_ext' => 1, 'overwrite' => 1));
$test->estensioni_ok(array('zip', 'rar', 'mp3', 'jpg' , 'gif'));
$test->upload_file('userfile','files/');
?>
Solo che il tutto non funziona, ma non riesco a capire il perchè, ho notato che printando la variabile: $nome_file della function upload_file, la variabile è vuota!
Dove sta l'errore???