Partage
  • Partager sur Facebook
  • Partager sur Twitter

Upload d'image - Undefined Index

Sujet résolu
    26 mai 2018 à 14:38:09

    Bonjour à toutes et à tous,

    Je suis bloqué sur le chargement d'une image. Je veux la charger, la traiter (vérifications diverses), et ensuite la "copyrighter" (ajouter un petit logo en fond). Mais j'ai un "undefined index"... Je ne saisis pas.

    copyrighter.php

    <fieldset>
    
    <legend>Copyrighter</legend>
    
    <form method="post" action="copyrighter2.php" enctype="multipart/form-data"> 
    <p><label>Sélectionner mon image (2 Mo. maximum) : </label><br><input type="file" name="image">
    <input type="submit" value="Copyrighter mon image"></p>
    </form>
    
    </fieldset>



    copyrighter2.php

    <?php
    
    //ON VERIFIE SI UN AVATAR A ETE ENVOYE PAR LE MEMBRE. SINON, ON CONTINUE
    		
    if (isset($_FILES['image']))
    {
    	//ON VERIFIE QUE L'ENVOI DU FICHIER NE CONTIENT PAS D'ERREUR
    		
    	if($_FILES['image']['error'] == 0)
    	{
    		//ON VERIFIE QUE LE FICHIER NE DEPASSE PAS LA TAILLE MAXIMALE AUTORISEE
    			
    		if ($_FILES['image']['size'] <= 2000000)
    		{
    			//ON VERIFIE QUE LE FICHIER RESPECTE LES EXTENSIONS AUTORISEES
    			
    			$infosfichier = pathinfo($_FILES['image']['name']);
    			$extension_upload = $infosfichier['extension'];
    			$extensions_autorisees = array('jpg', 'jpeg', 'gif', 'png');
    				
    			//SI TOUT EST OK, ON VALIDE L'ENVOI DU FICHIER ET ON RENVOIE UN MESSAGE DE CONFIRMATION
    			
    			if (in_array($extension_upload, $extensions_autorisees))
    			{
    						
    				//DOSSIER OU SERA STOCKE L'AVATAR
    					
    				$target_dir = "copyright/";
    						
    				//DEFINITION DU NOM DU FICHIER QUI SERA STOCKE (ID + EXTENSION)
    					
    				$target_file = $target_dir . $donnees['id'] . '.' . $infosfichier['extension'];
    				move_uploaded_file($_FILES['image']['tmp_name'], $target_file);
    			}
    			else
    			{
    				echo 'Votre fichier doit contenir une des extensions suivantes : <strong>' . $extensions_autorisees['0'] . ', ' . $extensions_autorisees['1'] . ', ' . $extensions_autorisees['2'] . ', ' . $extensions_autorisees['3'] . '</strong>.';
    			}
    		}
    		else
    		{
    			$taille_maximale = ($_FILES['image']['size'] / 1000000);
    			echo 'Votre fichier dépasse la taille maximale autorisée. Taille maximale : <strong>' . $taille_maximale . ' Mo.</strong>'; exit;
    		}
    	}
    	else
    	{
    		echo 'L\'envoi du fichier a échoué. Veuillez recommencer svp.'; exit;
    	}
    }
    
    else
    {
    	echo 'Vous ne pouvez pas accéder à cette page directement.'; exit;
    }
    
    //ON TRAITE L'IMAGE ENVOYEE AFIN DE LA COPYRIGHTER
    	
    $image_a_copyrighter = $target_file;
    
    header ("Content-type: image/jpeg"); // L'image que l'on va créer est un jpeg
    
    // On charge d'abord les images
    $source = imagecreatefrompng("logo.png"); // Le logo est la source
    $destination = imagecreatefromjpeg($image_a_copyrighter); // La photo est la destination
    
    // Les fonctions imagesx et imagesy renvoient la largeur et la hauteur d'une image
    $largeur_source = imagesx($source);
    $hauteur_source = imagesy($source);
    $largeur_destination = imagesx($destination);
    $hauteur_destination = imagesy($destination);
    
    // On veut placer le logo en bas à droite, on calcule les coordonnées où on doit placer le logo sur la photo
    $destination_x = $largeur_destination - $largeur_source;
    $destination_y =  $hauteur_destination - $hauteur_source;
    
    // On met le logo (source) dans l'image de destination (la photo)
    imagecopymerge($destination, $source, $destination_x, $destination_y, 0, 0, $largeur_source, $hauteur_source, 60); // 60 = pourcentage de transparence
    
    // On affiche l'image de destination qui a été fusionnée avec le logo
    imagejpeg($destination);
    
    ?>

    Si je fais un print_r(), il me retourne un Undefined Index... du coup il ne traite rien et affiche le message d'erreur "Vous ne pouvez pas accéder à cette page directement".

    Merci pour votre aide !

    • Partager sur Facebook
    • Partager sur Twitter
      26 mai 2018 à 16:47:09

      Vous avez 2 fois un document dans le code ... Est-ce vraiment ce que vous avez? ou l'espace de copie a-t-il mal tourné ???
      • Partager sur Facebook
      • Partager sur Twitter
        26 mai 2018 à 18:08:42

        Bonjour

        Quels sont les droits sur le fichier, il doit être mis à 777

        • Partager sur Facebook
        • Partager sur Twitter
          27 mai 2018 à 0:29:13

          En effet je pense que le problème venait en partie des droits qui n'étaient pas à 777.

          Tout marche nickel désormais. Plus d'erreur de Undefined Index :)

          La première partie de mon script upload le fichier, l'enregistre sur mon serveur, la deuxième partie traite l'image et y ajoute le logo copyright, puis l'enregistre en lieu et place du fichier uploadé précedemment.

          Je ne sais pas si c'est la meilleure méthode, mais elle fonctionne...

          Merci à toutes et à tous pour votre aide :)

          • Partager sur Facebook
          • Partager sur Twitter
            27 mai 2018 à 18:04:26

             Vous devez soit déplacer hero_block_search_box_edit_form () de hero_block_search_box.inc vers votre fichier .module, soit en haut de votre définition de formulaire (ou hook_form_alter () si c'est ce que vous utilisez), vous devez ajouter ce qui suit:

            form_load_include ($ form_state, 'inc', MODULENAME, 'hero_block_search_box');

            où MODULENAME est la clé du module (nom de la machine) de votre module. Assurez-vous de ne pas inclure le .inc dans le dernier paramètre - je ne l'ai pas oublié, je l'ai laissé exprès.

            Tutuapp 9Apps Aptoide

            • Partager sur Facebook
            • Partager sur Twitter
            sarah imenz

            Upload d'image - Undefined Index

            × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
            × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
            • Editeur
            • Markdown