0.3 :
La plus grande amélioration étant un systeme qui empèche la lecture de FAUX fichier image. getimagesize(); n'étant pas la panacé, l'image est désormais ouverte et lu ligne par ligne pour et on vérifié la non présence de code malicieux.
ID n'est plus passé dans l'url, mais désormais un identifiant "unique".
0.3.1 :
Cette nouvelle version ne comporte pas de grosse mise à jours, mais surtout plusieurs petites améliorations dans l'affichage des images, la qualité des jpg ou encore le nommage des variables.
0.4B :
- section admin protéger par login et mot de passe qui pemet de :
- - supprimer les fichiers
- - faire le tri dans les fichiers temporaires (cache et fichier orphelins)
- - ... plus à venir : ban par ip, config par formulaire
- - voir et télécharger les fichiers qui sont périmés (ou non)
- plus d'options de configuration
- possiblité de définir si on veut utiliser le système de cache ou non
- prise en compte de la transparence des PNG lors d'un redimmensionement
- un mode debug
- qualité des images JPG réglable
- contre vérification du type mime par rapport à son extension. (impossible de mettre en ligne un fichier BMP avec une extension .jpg)
- on ne redimmensionne plus les fichiers GIF pour l'instant. Faut que je règle le soucis de fond noir avec ceux qui sont transparent.
0.4.2 :
- amélioration de l'administration
- option pour voir une miniature de l'image mis en ligne
- option pour voir un lien automatique type BBcode pour forum
- optimisation
0.4.3 :
- compteur de téléchargement de chaque fichier
- compteur de visualistion de chaque image
- le code correct pour créer la base mysql
0.4.4 :
- si on passe en mode urlRewriting, une extension est ajouter à l'url pour être compatible avec tous les forums.
- Ajout d'une option qui permet de mettre un mot de passe pour les utilisateurs
- Quelques changements mineurs dans le code
0.5 :
Cette version inclue plusieurs nouveautées :
- possibilité de configurer la suppression automatique des fichiers périmés.
- on peux définir un mot de passe pour l'upload de fichier, mais aussi pour voir un fichier.
- nouveau système pour voir en direct certains fichiers multimédias. Pour l'instant, uniquement les fichiers .mp3 et .swf
- pour bannir une ip on le fais désormais via un fichier texte avec une IP par ligne.
- Re structuration des fichiers (attention lors d'une mise à jours)
- Ajout d'une page "details" qui récapitule les infos du fichier
- Optimisation et plein de petits trucs ...
0.5 :
- Quelques optimisations et amélioration en termes de rapidité
- Amélioration du lecteur multimédia
$upload_cfg['_urlrewriting'] = 1en
$upload_cfg['_urlrewriting'] = 0
$upload_cfg['_votre_site'] = 'http://www.graphiks.net'; // adresse http complete du sit
<?php
/*
myPHPupload 0.3.2
Gunning sky
www.graphiks.net
*/
define('UPLOAD_SAFE',true);
if(file_exists('./config.php'))
include('./config.php');
else
exit('Le fichier config.php n\'est pas au bon endroit.');
// on recupere l'id du fichier à affiché
if(!isset($_GET['i']) || empty($_GET['i']))
exit("Paramètres manquants");
else
$id = quote_smart($_GET['i']);
// on test s'il existe bien dans la BDD
$requete = "SELECT * FROM ".$upload_cfg['_sqltable']." WHERE ref='$id'";
$sql = mysql_query($requete);
$nbr = mysql_num_rows($sql);
if($nbr == 0)
exit('Fichier invalide');
else
{
$post = mysql_fetch_array($sql);
$fichier = $post['file'];
$date = $post['date'];
}
// y'a t'il une limitation sur temps ?
$now = mktime();
if($upload_cfg['_limite'] == 1)
{
// si oui, on test la validité
$max_validite = $date + $upload_cfg['_limite_validite'];
if($max_validite < $now)
exit("Fichier périmé");
}
// on doit verifier que le fichier existe belle et bien. on pourrai avoir supprime le fichier mais pa s l'enregistrement dans la base
if(!file_exists($upload_cfg['_rep_secret'].'/'.$fichier))
exit("Fichier inexistant");
// on vérifi que le fichier est bien une image dans un format que l'on sais traiter.
$ext = get_file_ext($fichier);
if($upload_cfg['_array_extok'][$ext] != $ext || empty($ext) || !valide_img($upload_cfg['_rep_secret'].'/'.$fichier))
exit("Image invalide");
// selon l'extension, on exécute le code PHP pour generer l'image.
// attention à la taille des images. selon votre configuration de PHP et du serveur, une trop grosse image&n bsp;pourrai faire planter le script.
switch($ext)
{
case 'jpg':
case 'jpeg':
if(!file_exists($upload_cfg['_rep_secret'].'/tmp_'.$fichier))
{
$image = $upload_cfg['_rep_secret'].'/'.$fichier;
$src_im = @ImageCreateFromJpeg($image);
$size = @GetImageSize($image);
$src_w = $size[0];
$src_h = $size[1];
if($src_w > $upload_cfg['_img_maxlargeur'])
{
$dst_w = $upload_cfg['_img_maxlargeur'];
$dst_h = round(($dst_w / $src_w) * $src_h);
}
else
{
$dst_w = $size[0];
$dst_h = $size[1];
}
$dst_im = @ImageCreateTrueColor($dst_w,$dst_h);
@ImageCopyResampled($dst_im,$src_im,0,0,0,0,$dst_w,$dst_h,$src_w,$src_h);
@imageJpeg($dst_im,$upload_cfg['_rep_secret'].'/tmp_'.$fichier,100);
}
if(file_exists($upload_cfg['_rep_secret'].'/tmp_'.$fichier))
{
@header('Content-Disposition: inline; filename="'.$fichier.'"');
@header("Content-Transfer-Encoding: image/jpg\n");
@header('Content-type: image/jpg');
@readfile($upload_cfg['_rep_secret'].'/tmp_'.$fichier);
}
exit();
break;
case 'gif':
if(!file_exists($upload_cfg['_rep_secret'].'/tmp_'.$fichier))
{
$image = $upload_cfg['_rep_secret'].'/'.$fichier;
$src_im = @ImageCreateFromGif($image);
$size = @GetImageSize($image);
$src_w = $size[0];
$src_h = $size[1];
$gif_direct_vue = false;
if($src_w > $upload_cfg['_img_maxlargeur'])
{
$dst_w = $upload_cfg['_img_maxlargeur'];
$dst_h = round(($dst_w / $src_w) * $src_h);
$gif_direct_vue = false;
}
else
{
$gif_direct_vue = true;
}
if(!$gif_direct_vue)
{
$dst_im = @ImageCreateTrueColor($dst_w,$dst_h);
@ImageCopyResampled($dst_im,$src_im,0,0,0,0,$dst_w,$dst_h,$src_w,$src_h);
@imageGif($dst_im,$upload_cfg['_rep_secret'].'/tmp_'.$fichier);
}
}
if(file_exists($upload_cfg['_rep_secret'].'/tmp_'.$fichier) || $gif_direct_vue)
{
@header('Content-Disposition: inline; filename="'.$fichier.'"');
@header("Content-Transfer-Encoding: image/gif\n");
@header('Content-type: image/gif');
if($gif_direct_vue)
{
@readfile($upload_cfg['_rep_secret'].'/'.$fichier);
}
else
@readfile($upload_cfg['_rep_secret'].'/tmp_'.$fichier);
}
exit();
break;
case 'png':
if(!file_exists($upload_cfg['_rep_secret'].'/tmp_'.$fichier))
{
$image = $upload_cfg['_rep_secret'].'/'.$fichier;
$src_im = @ImageCreateFromPng($image);
$size = @GetImageSize($image);
$src_w = $size[0];
$src_h = $size[1];
if($src_w > $upload_cfg['_img_maxlargeur'])
{
$dst_w = $upload_cfg['_img_maxlargeur'];
$dst_h = round(($dst_w / $src_w) * $src_h);
}
else
{
$dst_w = $size[0];
$dst_h = $size[1];
}
$dst_im = @ImageCreateTrueColor($dst_w,$dst_h);
@ImageCopyResampled($dst_im,$src_im,0,0,0,0,$dst_w,$dst_h,$src_w,$src_h);
@imagePng($dst_im,$upload_cfg['_rep_secret'].'/tmp_'.$fichier);
}
if(file_exists($upload_cfg['_rep_secret'].'/tmp_'.$fichier))
{
@header('Content-Disposition: inline; filename="'.$fichier.'"');
@header("Content-Transfer-Encoding: image/png\n");
@header('Content-type: image/png');
@readfile($upload_cfg['_rep_secret'].'/tmp_'.$fichier);
}
exit();
break;
}
?>
Nous - Plan du site - Informations légale - Contact - © Graphiks.net