1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157
|
If ((!$error)&& ($_POST["valider"]=="valider")) {
//SI LA PHOTO EST REMPLI ALORS :
if (($_FILES['photo']['name'])<>""){
//echo "Si il n'y a pas d'erreur";
$dossier = $_SERVER['DOCUMENT_ROOT']. '/photos/';
$fichier = basename($_FILES['photo']['name']);
$taille_maxi = 300000;
$taille = filesize($_FILES['photo']['tmp_name']);
$extensions = array('.jpg', '.jpeg', '.JPG', '.JPEG');
$extension = strrchr($_FILES['photo']['name'], '.');
//redimension de la photo
$infos_img = getimagesize($_FILES['photo']['tmp_name']);
$largeurDestination = 500;
$quality = 90;
//Début des vérifications de sécurité...
//Si l'extension n'est pas dans le tableau
if(!in_array($extension, $extensions))
{
$erreur = '<p>Vous devez uploader un fichier de type jpg ou jpeg</p>';
}
if($taille>$taille_maxi)
{
$erreur = '<p>Votre fichier est trop volumineux</p>';
}
if(!isset($erreur)) //S'il n'y a pas d'erreur, on upload
{
//On formate le nom du fichier ici...
$fichier = strtr($fichier,
'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ',
'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');
$fichier= strtolower($fichier); //met tout en minuscule
$fichier = preg_replace('/([^.a-z0-9]+)/i', '-', $fichier);
/* verification du nom dans la base de donnée */
$sql="SELECT nom FROM photos where nom='$fichier'";
$req = mysql_query($sql) or die('<p id="message">Une erreur s\'est produite. Veuillez nous excuser pour ce désagrément. (Erreur 1)</p>');
//echo "SELECT nom FROM photos where nom='".$fichier."'";
$val=mysql_fetch_array($req);
//if---6
if ($val){
$fichier="";
/* Ce nom de fichier existe deja donc */
$tab = array('a','b','c','d','e','f','g','i','j','k',
'l', 'm', 'n', 'o', 'p',
'k', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9');
for ($i = 1; $i <= 15; $i++)
{
$fichier=$fichier.$tab[rand(0,36)] ;
}
$fichier=$fichier.$extension;
//if---fin6
}
/*RE verification du nom dans la base de donnée */
$sql="SELECT nom FROM photos where nom='".$fichier."'";
$req=mysql_query($sql)or die('<p id="message">Une erreur s\'est produite. Veuillez nous excuser pour ce désagrément. (Erreur 2)</p>');
$val=mysql_fetch_array($req);
//if---7
if ($val){
$fichier="";
/* Ce nom de fichier existe deja donc */
$tab = array('a','b','c','d','e','f','g','i','j','k',
'l', 'm', 'n', 'o', 'p',
'k', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9');
for ($i = 1; $i <= 15; $i++)
{
$fichier=$fichier.$tab[rand(0,36)] ;
}
$fichier=$fichier.$extension;
}
//if---fin7
//if---8
echo "<br><br>FILES = ".$_FILES['photo']['tmp_name'];
if(move_uploaded_file($_FILES['photo']['tmp_name'], $dossier . $fichier)) //Si la fonction renvoie TRUE, c'est que ça a fonctionné...
{
//calcul et redimension
//*********************
$fichierSource = $dossier ;
$fichierSource .= "/";
$fichierSource .= $fichier;
$fichierSource = $fichierSource;
//hauteur / largeur
$rapport = $infos_img[1] / $infos_img[0];
//Dimension de sortie
$hauteurDestination = $largeurDestination * $rapport;
//Réaloue la mémoire dont le serveur à besoin
//*******************************************
$memoryNeeded = round(($infos_img[0] * $infos_img[1] * $infos_img['bits'] * $infos_img['channels'] / 8 + Pow(2, 16)) * 1.65);
$mem_in_use= memory_get_usage();
//echo "Mémoire utilisée : $memoryNeeded contre $mem_in_use<br><br>";
$test = (integer) ini_get('memory_limit') + ceil(((memory_get_usage() + $memoryNeeded) - (integer) ini_get('memory_limit') * pow(1024, 2)) / pow(1024, 2)) + 1;
//solution calculée
if(function_exists('memory_get_usage') && memory_get_usage() + $memoryNeeded > (integer) ini_get('memory_limit') * pow(1024, 2))
ini_set('memory_limit', (integer) ini_get('memory_limit') + ceil(((memory_get_usage() + $memoryNeeded) - (integer) ini_get('memory_limit') * pow(1024, 2)) / pow(1024, 2)) + 2 . 'M');
//Création de l'image
//*******************
$source = imagecreatefromjpeg($fichierSource);
$largeurSource = imagesx($source);
$hauteurSource = imagesy($source);
//if---10
if($largeurSource > $largeurDestination){
$im = ImageCreateTrueColor ($largeurDestination, $hauteurDestination)
or die ('<p id="message">Une erreur s\'est produite. Veuillez nous excuser pour ce désagrément. (Erreur 3)</p>');
}
//if---fin10
else{
$im = ImageCreateTrueColor ($infos_img[0], $infos_img[1])
or die ('<p id=message">Une erreur s\'est produite. Veuillez nous excuser pour ce désagrément. (Erreur 4)</p>');
$largeurDestination = $infos_img[0];
$hauteurDestination = $infos_img[1];
}
//Redimentionnement
//*****************
ImageCopyResampled($im, $source, 0, 0, 0, 0, $largeurDestination, $hauteurDestination, $largeurSource, $hauteurSource);
//Création du fichier de sortie
//*****************************
$fh=fopen($fichierSource,'w');
fclose($fh);
ImageJpeg ($im,$fichierSource,$quality);
$size_file = filesize($fichierSource);
//On dit que la photo a bien été sauvegarder
$photo_upload="oui";
}
else //Sinon (la fonction renvoie FALSE).
{
echo '<p id="message">Echec de l\'upload. <br/><a href="insert.php">Retourner au formulaire</a></p>';
$error_upload="Echec de l'upload";
}
}
else
{
echo $erreur;
}
}
} |
Partager