Ho creato uno script di upload delle immagini, il quale alla fine dell'upload se è andato a buon fine, riporta il link dell'immagine accompagnato da qualche parola. Il problema è proprio quest'ultimo parte, che non funziona proprio come dovrebbe, mi spiego.
Questo è il codice della pagina upload.html dove vi è il form di upload:
Codice HTML:
<script>
function verifica()
{
fi = document.getElementById('files');
if(fi.value == '')
{
alert('Il campo deve essere riempito!');
return false;
}
}
</script>
La dimensione massima consentita è pari a 1 MegaByte.<br /> Le estensioni autorizzate sono: jpg, gif, png, jpeg.<br /><br />
<center><form action="upload.php" method="post" enctype="multipart/form-data">
<input type="file" name="upfile" id="files">
<input type="submit" onclick="return verifica();" value="Invia il file"><br />
</form></center>
Questo è il codice della pagina upload.php alla quale il fileupload.html passa i dati:
Codice PHP:
<?
$upload_dir = "immagini";
$dir = "http://softnews.altervista.org/articoli/immagini";
$d = "http://softnews.altervista.org/articoli";
$cartellup = "immagini";
$allow_types=array("jpg","gif","png",);
$max_size = '1024';
$max_bytes=$max_size*1024;
function get_ext($key) {
$key=strtolower(substr(strrchr($key, "."), 1));
$key=str_replace("jpeg","jpg",$key);
return $key;
}
$ext_count=count($allow_types);
$i = 0;
foreach($allow_types AS $extension) {
If($i <= $ext_count-2) {
$types .="*.".$extension.", ";
} Else {
$types .="*.".$extension;
}
$i++;
}
unset($i,$ext_count);
if(trim($_FILES["upfile"]["name"]) == "") {
die('Nessun file da uppare.<br />Le possibili cause possono essere:<br />Stai uppando un file di dimensioni troppo elevate;<br />Hai ricaricato la pagina quindi i dati sono andati persi.<form method="post" action="./upload.html"><input type="submit" value="Ritorna all\' Indice"></form>');
}
if(@is_uploaded_file($_FILES["upfile"]["tmp_name"])) {
$url = 'xxsdf';
$ext=get_ext($_FILES["upfile"]['name']);
$gi = ($url) ? '' : ".".$ext;
$file_name=rand(0,100000).$gi;
$copia_simile = $file_name;
$next = $_FILES["upfile"]["name"].'_'.$file_name.'.'.$ext;
If(!in_array($ext, $allow_types)) {
echo "Estensione non valida per il file ".$_FILES["upfile"]['name'].", solo le estensioni ".$types." sono accettate. <br /><br />Il file non è stato uppato.<form method='post' action='./upload.html'><input type='submit' value='Indietro'></form>";
exit;
}
else if($max_bytes == $_FILES["upfile"]["size"])
{
echo 'Il file è troppo grande! La massima dimensione è 1 MB';
exit;
}
@move_uploaded_file($_FILES["upfile"]["tmp_name"], "$upload_dir/$next") or die("Errore..");
} else {
die("Problemi nell'upload del file " . $_FILES["upfile"]["name"]);
}
echo "L\'upload del file " . $_FILES["upfile"]["name"] . " è avvenuto correttamente.<br /><br />Per inserire l\'immagine nella news, copia il seguente codice: <input type='text' value=$cartellup."/immagini/".$next size=\"85\" readonly onclick='this.focus(); this.select();'>";
?>
Il problema è che ad avvenuto upload, la pagina mi dice soltanto "L'upload del file .-." e basta, mentre dovrebbe darmi il nome, finire la frase e darmi il link da inserire.
Potete verificare voi stessi, provando a caricare un'immagine aquesto indirizzo.