problème insetion d'image avec redimmensionnement

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : problème insetion d'image avec redimmensionnement

Re: problème insetion d'image avec redimmensionnement

par AB » 07 févr. 2012, 21:39

Y'a pas mal de boulot à faire si tu veux avoir un code à peu près fonctionnel :

- Vérifier si tu n'écrase pas un fichier déjà existant.
- Prévoir une alternative en cas du dépassement du post max size (sinon tu auras une page blanche).
- Tester la capacité mémoire de ton script pour savoir si le redimensionnement est possible (sinon tu auras une page blanche).
- Refaire tes messages d'avertissement en supprimant les appels javascript qui ne sont pas idéals dans ce contexte.

Bref pour te guider pas à pas dans cette histoire il faudrait beaucoup de temps... (que je n'ai pas).

Si tu veux apprendre il y a ce tuto qui répond à mes deux premières remarques.
Pour faire du redimensionnement et gérer l'ensemble des remarques ci-dessus il y a cette classe prête à l'emploi.

Re: problème insetion d'image avec redimmensionnement

par amonite » 07 févr. 2012, 20:45

Bonsoir cdw77,

Le fait de la mettre en BLOB m'a mis le lien dans la BDD, mais il n'upload pas l'image dans le repertoire.

Merci de m'aider.

Bonne soirée

problème insetion d'image avec redimmensionnement

par amonite » 07 févr. 2012, 20:30

Bonjour,

J'ai essayé de faire un petit bout de code pour enregistrer des données avec redimmensionnement automatique.

Mais il me fait une erreur dès que je veux inserer l'image.

Le champs dans ma BDD est "photo" en varchar 255

Si quelqu'un voit une erreur que je n'aurais pas vu, je le remercie d'avance.

Bonne journée
<?php

if (isset ($_POST['valider']))
{
	$nom = $_POST['nom'];
	$prenom = $_POST['prenom'];
	$age = $_POST['age'];
	$code = $_POST['code'];
	$ville = $_POST['ville'];
	$tel = $_POST['tel'];
	$fax = $_POST['fax'];
	$gsm = $_POST['gsm'];
	$email = $_POST['email'];
	$sexe = $_POST['sexe'];
	$dossier ='../images/';
	$fichier = basename($_FILES['photo']['name']);
	$taille_maxi = 100000;
	$taille = filesize($_FILES['photo']['tmp_name']);
	$extensions = array('.png', '.gif', '.jpg', '.jpeg');
	$extension = strrchr($_FILES['photo']['name'], '.'); 

	// Si l'un des champs est vide -> erreur
	if (empty ($nom) || empty($prenom) || empty($age) || empty($code) || empty($ville) || empty($email))
		{
			echo '<body onLoad="alert(\'Veuillez entrer tous les champs.\')">'; 
			header("refresh:1; URL = 'admin.php'");
		}
		
		if(!in_array($extension, $extensions)) //Si l'extension n'est pas dans le tableau
		{
  		 	 echo '<body onLoad="alert(\'Veuillez charger une image de format .png ou .gif ou .jpg(.jpeg).\')">'; 
			 header("refresh:1; URL = 'produits.php' ");
		}

			if($taille>$taille_maxi)
			{
  		 	  	 echo '<body onLoad="alert(\'Image trop lourde.\')">'; 
				 header("refresh:1; URL = '../produits.php' ");
			}
		
			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 = preg_replace('/([^.a-z0-9]+)/i', '-', $fichier);
					 
     					if(move_uploaded_file($_FILES['photo']['tmp_name'], $dossier . $fichier)) //Si la fonction renvoie TRUE, c'est que ça a fonctionné...
   							  {
    							     echo '<body onLoad="alert(\'Image chargée avec succès.\')">'; 
									 header("refresh:1; URL = 'produits.php' ");
	  
		 
									 $file = "../images/".$_FILES['photo']['name'].""; # L'emplacement de l'image à redimensionner. L'image peut être de type jpeg, gif ou png

									 $x = 130;

									 $y = 110;

									 $size = getimagesize($file);

								if ($size)
									 {
										if ($size['mime']=='image/jpeg')
											 {
												$img_big = imagecreatefromjpeg($file); 
												$img_new = imagecreate($x, $y);
													# création de la miniature
												$img_mini = imagecreatetruecolor($x, $y)
												or   $img_mini = imagecreate($x, $y);

												// copie de l'image, avec le redimensionnement.
												imagecopyresized($img_mini,$img_big,0,0,0,0,$x,$y,$size[0],$size[1]);
												
												imagejpeg($img_mini,$file );

											}
											
									
										 elseif ($size['mime']=='image/png') 
					  					  	{
												$img_big = imagecreatefrompng($file); # On ouvre l'image d'origine
												$img_new = imagecreate($x, $y);
												# création de la miniature
												$img_mini = imagecreatetruecolor($x, $y)
												or   $img_mini = imagecreate($x, $y);
												
												// copie de l'image, avec le redimensionnement.
												imagecopyresized($img_mini,$img_big,0,0,0,0,$x,$y,$size[0],$size[1]);
												
												imagepng($img_mini,$file );
						
											}
											
									 	elseif ($size['mime']=='image/gif') 
									 		{
												$img_big = imagecreatefromgif($file); # On ouvre l'image d'origine
												$img_new = imagecreate($x, $y);
												# création de la miniature
												$img_mini = imagecreatetruecolor($x, $y)
												or   $img_mini = imagecreate($x, $y);
												
												// copie de l'image, avec le redimensionnement.
												imagecopyresized($img_mini,$img_big,0,0,0,0,$x,$y,$size[0],$size[1]);
												
												imagegif($img_mini,$file );

											}


								 }}}
		
	
	{
		include('../connexion.php');
	 $nom = mysql_real_escape_string($nom) ;
	 $prenom = mysql_real_escape_string($prenom);
	 $age = mysql_real_escape_string($age);
	 $code = mysql_real_escape_string($code);
	 $ville = mysql_real_escape_string($ville);
	 $tel = mysql_real_escape_string($tel);
	 $fax = mysql_real_escape_string($fax);
	 $gsm = mysql_real_escape_string($gsm);
	 $email = mysql_real_escape_string($email);
	 $sexe = mysql_real_escape_string($sexe);
	 
	  
	 
		// Insertion dans la bdd
		$query = "insert into PROD(ID,nom,prenom,age,code,ville,tel,fax,gsm,email,sexe,photo) values('','$nom', '$prenom', '$age', '$code', '$ville', '$tel', '$fax', '$gsm', '$email', '$sexe', '../images/".$_FILES['photo']['name']."')";
		mysql_real_escape_string($query);


		if (mysql_query($query))
		{
			 echo '<body onLoad="alert(\'Evenement ajoutée avec succès.\')">'; 
			 header("refresh:1; URL = 'produits.php' ");
		}
		else
		{
			echo '<body onLoad="alert(\'Une erreur a été détectée.\')">'; 
			header("refresh:1; URL = 'produits.php' ");
		}
		//mysql_close();
	}
}
 
?>