Codice PHP:
<?
function GDVersion(){
if( !in_array('gd', get_loaded_extensions()) ) return 0;
elseif( isGD2supported() ) return 2;
else return 1;
}
function isGD2supported(){
global $GD2;
if( isset($GD2) AND $GD2 ) return $GD2;
else{
$php_ver_arr = explode('.', phpversion());
$php_ver = intval($php_ver_arr[0])*100+intval($php_ver_arr[1]);
if( $php_ver < 402 ){ // PHP <= 4.1.x
$GD2 = in_array('imagegd2',get_extension_funcs("gd"));
}
elseif( $php_ver < 403 ){ // PHP = 4.2.x
$im = @imagecreatetruecolor(10, 10);
if( $im ){
$GD2 = 1;
@imagedestroy($im);
}
else $GD2 = 0;
}
else{ // PHP = 4.3.x
$GD2 = function_exists('imagecreatetruecolor');
}
}
return $GD2;
}
function IsFormatSupported($format){
if( ($format == 'gif') AND (imagetypes() & IMG_GIF) )return true;
elseif( ($format == 'jpeg') AND (imagetypes() & IMG_JPG) )return true;
elseif( ($format == 'png') AND (imagetypes() & IMG_PNG) )return true;
else return false;
}
function ApplicaBordo(&$imres){
$h = imagesy($imres)-1;
$w = imagesx($imres)-1;
$white = imagecolorallocate($imres, 255, 255, 255);
$black = imagecolorallocate($imres, 0, 0, 0);
imagerectangle($imres, 0, 0, $w, $h, $black); // Bordo composto da una linea esterna nera
imagerectangle($imres, 1, 1, $w-1, $h-1, $white); // e da una linea interna bianca
}
function imagemyrectangle(&$imgres, $x1, $y1, $x2, $y2, $col){
imageline($imgres, $x1, $y1, $x2-2, $y1, $col ); //top
imageline($imgres, $x1+1, $y2-1, $x2, $y2-1, $col ); //bottom
imageline($imgres, $x2-1, $y1, $x2-1, $y2-2, $col ); //right
imageline($imgres, $x1, $y1+1, $x1, $y2, $col ); //left
}
//Watermark : Anche l'applicazione di un watermark, cioè di un'immagine salvata sopra all'originale per impedirne un utilizzo al di fuori dei termini di licenza è un'operazione abbastanza semplice con le librerie GD.
function AddWaterMark(&$imgres, &$imgWM){
imageCopyMerge($imgres, $imgWM, 5, 5, 0, 0, imageSX($imgWM), imageSY($imgWM), 50); }
function thumb($src,$dest,$thumb_width){
//Inizio il resize
$fullsize = getimagesize($src);
if( $fullsize[2] == 2 ){$im = @imagecreatefromjpeg($src);}
elseif( $fullsize[2] == 1 ){$im = @imagecreatefromgif($src);}
elseif( $fullsize[2] == 3 ){$im = @imagecreatefrompng($src);}
$fullsize_height=$fullsize[1];
$fullsize_width=$fullsize[0];
$thumb_height=floor($fullsize_height/($fullsize_width/$thumb_width));
if( (GDVersion() == 2) AND ($fullsize[2] != 1) ){
$thumb = imagecreatetruecolor($thumb_width,$thumb_height);
imagecopyresampled($thumb, $im, 0, 0, 0, 0, $thumb_width, $thumb_height, $fullsize[0], $fullsize[1]);
}else{
$thumb = imagecreate($thumb_width,$thumb_height);
imagecopyresized($thumb, $im, 0, 0, 0, 0,$thumb_width, $thumb_height, $fullsize[0], $fullsize[1]);
}
imagejpeg($thumb, $dest, 80);
imagedestroy($im);
imagedestroy($thumb);
}
// Recupero delle dimensioni dell'immagine
function dimimage($src){
$fullsize = getimagesize($src);
if( $fullsize[2] == 2 ){$im = @imagecreatefromjpeg($src);}
elseif( $fullsize[2] == 1 ){$im = @imagecreatefromgif($src);}
elseif( $fullsize[2] == 3 ){$im = @imagecreatefrompng($src);}
$fullsize_height=$fullsize[1];
$fullsize_width=$fullsize[0];
imagedestroy($im);
return array($fullsize_width,$fullsize_height);
}
?>
poi ho creato un file per la modifica della foto che mi permettesse di visualizzare la foto vecchia, se eventualmente presente, oppure di visualizzare una immagine di default a seconda del sesso dell'utente.
Codice PHP:
<?
include_once("include/config.php");
include_once("include/auth.lib.php");
include_once("include/reg.lib.php");
include_once("include/gd.php");
include_once("include/function.php");
list($status, $user) = auth_get_status();
if ($status == AUTH_LOGGED){
if ((isset($_GET["id"])) AND ($prof = get_profilo($user["id_user"]))){
?>
<?
if ((isset($_POST["act"])) AND ($_POST["act"] == "ok")){
$size = "800000"; //What do you want size limited to be if there is one
$id = $_POST["id_user"];
//all image types to upload
$cert1 = "jpg"; //Jpeg type 1
$cert2 = "jpeg"; //Jpeg type 2
$cert3 = "gif"; //Gif type
$cert4 = "png"; //PNG type
//percorso della cartella dove mettere i file caricati
$uploaddir = '../community/public/utenti/';
$uploaddir_thumb = '../community/public/thumb/';
//Recupero il percorso temporaneo del file
$userfile_tmp = $_FILES['foto']['tmp_name'];
//recupero il nome originale del file caricato
$userfile_name = $_FILES['foto']['name'];
if ($userfile_name == "") {
echo "<div class='grassettoarancio' align='center'>
Nessun file selezionato.
</div>
";
}else{
$ext = explode('.', $userfile_name);
$pos = sizeof($ext) - 1;
$userfile_name = $id.'.'.$ext[$pos];
$userfile_type = $ext[$pos];
$img1_size = $_FILES['foto']['size'];
list($w,$h) = dimimage($userfile_tmp);
if (($img1_size > $size) OR ($w > 1024) OR ($h > 1024)) {
echo "<div class='grassettoarancio' align='center'>
Il file ha una dimensione troppo grande.
</div>
";
}else{
//Checks if file is an image
if (($userfile_type != $cert1) AND ($userfile_type != $cert2) AND ($userfile_type != $cert3) AND ($userfile_type != $cert4)){
echo "<div class='grassettoarancio' align='center'>
la Foto non ha un'estensione consentita.
</div>";
}else{
//Cancella foto vecchia
if(($_POST["foto"]!="")AND(file_exists($uploaddir.$_POST["foto"]))){
unlink($uploaddir.$_POST["foto"]);
unlink($uploaddir_thumb.$_POST["foto"]);
}// FINE IF CANCELLAZIONE FILE
//copio il file dalla locazione temporanea alla mia cartella upload
if (move_uploaded_file($userfile_tmp, $uploaddir . $userfile_name))
{
//Se l'operazione è andata a buon fine...
//echo $uploaddir.$userfile_name." ".$uploaddir."thumb/".$userfile_name;
thumb($uploaddir.$userfile_name,$uploaddir_thumb.$userfile_name,100);
echo "<div class='grassettoarancio' align='center'>
Foto caricata!!!
</div>";
$sql="update utenti set foto = '$userfile_name' where id = $id";
$result = rs_comm($sql);
}
else
{
//Se l'operazione è fallta...
echo "<span class='messaggi' align='center'>
Operazione Fallita!!!
</span>";
//print_r($_FILES);
}
}
}
}
}else{
$sql= "SELECT foto FROM utenti WHERE id = ".$_GET["id"]."";
$result = rs_select($sql);
$rs = mysql_fetch_array($result);
?>
<table width="100%" border="0" align="center" cellpadding="0" cellspacing="0" class="sezcenter">
<tr>
<td height="30" class="blu">[img]../community/images/modifica foto.jpg[/img]</td>
</tr>
<tr>
<td><form action="" method="post" enctype="multipart/form-data" name="form1" id="form1">
<table width="98%" border="0" align="center" cellpadding="2" cellspacing="2">
<tr>
<td></td>
<td></td>
</tr>
<tr>
<td>Foto Attuale:</td>
<td align="center">
<?
if ($rs["logo"] != ""){
list($wt,$ht) = dimimage('../public/thumb/'.$rs["logo"]);
list($w,$h) = dimimage('../public/loghi/'.$rs["logo"]);
$w = $w + 20;
$h = $h + 90;
echo "<a href=\"javascript:popUpWindow('../view_logo.php?file=".$rs["logo"]."', '50', '50', '$w', '$h')\" >[img]../public/thumb/".$rs["logo"]."[/img]</a>";
}
?>
<? if (($rs["foto"] != "") AND file_exists("../community/public/thumb/".$rs["foto"])){ ?>
[img]../community/public/thumb/<? echo $rs[[/img]" alt="Nick: <? echo $prof["username"]; ?>" name="FOTO" border="1" align="absmiddle" />
<? }else{ ?>
<? if ($rs["sesso"] == "m") { ?>
[img]../community/public/utenti/man.jpg[/img]" name="FOTO" width="90" height="95" border="0"></a>
<? }else{ ?>
<? if ($rs["sesso"] == "f") { ?>
[img]../community/public/utenti/girl.jpg[/img]" border="0">
<?
}
}
}
?>
<input name="Foto" type="hidden" value="<? echo $rs["foto"]; ?>" />
</td>
</tr>
<tr>
<td colspan="2" class="trattoGiallo"></td>
</tr>
<tr>
<td>Foto:</td>
<td><input name="foto" type="file" id="foto" size="35" /></td>
</tr>
<tr>
<td colspan="2" class="trattoGiallo"></td>
</tr>
<tr>
<td></td>
<td align="right"><input name="id_user" type="hidden" id="id_user" value="<? echo $_GET["id"];?>" />
<input name="act" type="hidden" id="act" value="ok" />
<input name="imageField2" type="image" src="../img/tasto_modifica.gif" width="64" height="13" border="0" />
</td>
</tr>
</table>
</form></td>
</tr>
<tr>
<td height="20" class="blu"></td>
</tr>
</table>
<? } ?>
<?
}
}else{
header("Refresh: 3;URL=profilo.php");
echo '<div align="center">NON Sei connesso ... ... </div>';
}
?>
in questo modo la foto caricata dall'utente viene rinominata con il numero id dell'utente con estensione jpg.