Azzurra IRC Network Forum

Script: Uploader di Immagini in PHP

fank · 01/03/2003 23:45 · #1
Uploader in PHP, di fanatiko.
Tool per salvare immagini da un PC al WEB mediante una form.

2 Files:
(1) form.htm : la form da avviare
(2) uploader.php : il motore

fanatiko
fank · 01/03/2003 23:48 · #2
(1) form.htm


<HTML><BODY><CENTER>
<FORM NAME='ulform' METHOD='POST' ACTION='uploader.php' ENCTYPE='multipart/form-data'>
<INPUT TYPE='hidden' NAME='MAX_FILE_SIZE' VALUE='51200'>
<INPUT TYPE='file' NAME='ulfile' SIZE='40'><BR>
<TEXTAREA NAME='uldesc' ROWS='3' COLS='44'>descrivi...</TEXTAREA><BR>
<INPUT TYPE='submit' VALUE='Invia'>
</FORM>
</CENTER></BODY></HTML>


fanatiko
fank · 01/03/2003 23:50 · #3
(2) uploader.php


<?php

##### CONFIGURAZIONE

/* requisiti delle immagini: tipo, max taglia (Byte), max larghezza e altezza (pixel) */
$ftypes=array("image/gif"=>".gif","image/pjpeg"=>".jpg","image/bmp"=>".bmp","image/x-png"=>".png");
$fmaxsize=51200;
$fmaxwidth=600;
$fmaxheight=600;

/* cartella di memorizzazione */
$ulfolder="ulfiles";

/* prefisso da associare ai file che verranno rinominati nella forma 'pic12345.ext' */
$ulprefix="pic";

/* registro degli invìi */
$datafn="uploader.dat";



##### DEFINIZIONE FUNZIONI DI SUPPORTO

$errormsg="";

/* verifica che i requisiti per le immagini siano rispettati */
function check_image(){
global $HTTP_POST_FILES,$ulfile,$errormsg;
global $ftypes,$fmaxsize,$fmaxwidth,$fmaxheight;
if(($imgprop=getimagesize($ulfile))===FALSE)
$errormsg="nessun file selezionato. (err1)";
elseif($HTTP_POST_FILES['ulfile']['name']=="")
$errormsg="nessun file selezionato. (err2)";
elseif($HTTP_POST_FILES['ulfile']['size']<=0)
$errormsg="file o dimensione del file non validi. (err3)";
elseif($HTTP_POST_FILES['ulfile']['size']>$fmaxsiz e)
$errormsg="dimensione del file eccessiva. (err4)";
elseif(!array_key_exists($HTTP_POST_FILES['ulfile' ]['type'],$ftypes))
$errormsg="tipo di file non supportato. (err5)";
elseif($imgprop[0]>$fmaxwidth)
$errormsg="larghezza del file eccessiva. (err6)";
elseif($imgprop[1]>$fmaxheight)
$errormsg="altezza del file eccessiva. (err7)";
return;
}

/* escape dei tag HTML e soppressione di caratteri non necessari o pericolosi */
function format_msg($text){
$text=trim($text);
$text=ereg_replace("(\x09|\x0A|\x0D)"," ",$text);
$text=ereg_replace("[\x01-\x1F]","",$text);
$text=htmlentities($text,ENT_QUOTES);
$text=ereg_replace("[\x24]","$",$text);
$text=ereg_replace("[\x5C]{2}","\",$text);
$text=ereg_replace("[\x5C]","",$text);
$text=ereg_replace("([^ ])[ ]{2,}([^ ])","\\1 \\2",$text);
return $text;
}



##### SEZIONE OPERATIVA

error_reporting(E_ERROR);

check_image();
$uldesc=format_msg($uldesc);

if($errormsg!="")
exit("ERRORE: ".$errormsg);
elseif(($fid=fopen($datafn,"a"))===FALSE)
exit("ERRORE: "."errore di sistema inatteso. (sys1)");
elseif(flock($fid,LOCK_EX)===FALSE)
exit("ERRORE: "."errore di sistema inatteso. (sys2)");
else{
do
$newfn=$ulprefix.rand(10000,99999).$ftypes[$HTTP_P OST_FILES['ulfile']['type']];
while(file_exists($ulfolder."//".$newfn));
if(!is_dir($ulfolder))mkdir($ulfolder,0700);
if(move_uploaded_file($ulfile,$ulfolder."//".$newfn)===FALSE)
exit("ERRORE: "."errore di sistema inatteso. (sys3)");
else
fputs($fid,$newfn.",".time().",".$REMOTE_ADDR.",". $uldesc."\n");
flock($fid,LOCK_UN);
fclose($fid);
}



##### EPILOGO ESECUZIONE

exit("File caricato.");

?>


fanatiko