Problème avec upload photo de profil

jake

jake Le 16 septembre 2016 à 16:19 (Édité le 25 janvier 2019 à 17:52)

Bonjour à tous !

j'ai un problème avec mon script. J'ai suivi le tuto de A à Z de PrimFX, écrit & ré-écrit le code complet du php pour upload une photo de profil dans son espace membre.
Il ne se passe absolument rien. Rien dans la base de donnée, rien dans le dossier de stockage...

Pouvez-vous m'aider svp ?

voici mon code php :

   if(isset($_FILES['avatar']) AND !empty($_FILES['avatar']['name']))
   {
      $tailleMax = 2097152;
      $extensionsValides = array('jpg', 'jpeg', 'gif', 'png');
      if($_FILES['avatar']['size'] <= $tailleMax)
      {
         $extensionUpload = strtolower(substr(strrchr($_FILES['avatar']['name'], '.'), 1));
         if(in_array($extensionUpload, $extensionsValides))
         {
            $chemin = "membres/avatars/".$_SESSION['auth']->id.".".$extensionupload;
            $resultat = move_uploaded_file($_FILES['avatar']['tmp_name'], $chemin);
            if($resultat)
            {
               $updateavatar = $bdd->prepare('UPDATE membres SET avatar = :avatar WHERE id = :id');
               $updateavatar->execute(array(
                  'avatar' => $_SESSION['id'].".".$extensionUpload,
                  'id' => $_SESSION['id']
                  ));
               header('Location: profil.php?id='.$_SESSION['id']);
            }
            else
            {
               $msg = "Erreur pendant l'importation de votre photo de profil";
            }
         }
         else
         {
            $msg = "Votre photo de profil doit être au format jpg, jpeg, gif ou png";
         }
      }
      else
      {
         $msg = "Votre photo de profil ne doit pas dépasser 2 Mo";
      }
   }
TheOldNoob

TheOldNoob Le 17 septembre 2016 à 08:52

Salut l'ami,

On peu voir ton formulaire qui va avec? En générale l'erreur vien de la, et souvent c'est l'oublie du enctype="multipart/form-data"
<form method="post" enctype="multipart/form-data">

tutosfaciles48

tutosfaciles48 Le 18 septembre 2016 à 15:26

Bonjour, je remarque que tu a fait une faute à ta variable $extensionUpload ligne 10: tu a mis le u en minuscule
faucon_noir

faucon_noir Le 19 septembre 2016 à 02:35

salut, as tu d'abord fait une insertion dans la base de données pour les membres avant de vouloir faire des mises à jour au niveau des photos. Si tu ne la pas fait il faudrait d'abord l'envisager pour que ton code marche.
jake

jake Le 23 septembre 2016 à 13:18

Salut,

oui j'ai fait l'insertion lors de l'inscription de la personne et ça fonctionne mais pour UPDATE ca me la supprime de la base de donnée et rien ne se produit.
Pas d'erreur, rien...
TheOldNoob

TheOldNoob Le 23 septembre 2016 à 14:06

On peu voir ton code complet et pas que le traitement?
faucon_noir

faucon_noir Le 26 septembre 2016 à 05:18

salut jake, utilise une fonction de debug php pour voir le contenu de tes variables, si effectivement le tout est posté. J'utilise celle ci:
function debug($variable)
{
echo '<pre>'.print_r($variable, true).'</pre>';
}
et puis pour upload la photo je te conseille la méthode du site du zero , c'est celle que j'utilise elle marche très bien
coucougael94

coucougael94 Le 30 septembre 2016 à 19:46

  • Salut, ton code php n'est pas le problème (j'ai vite fait regardé)
faucon_noir

faucon_noir Le 30 septembre 2016 à 21:30

salut, Qu'est ce tu as fait quoi?
TheOldNoob

TheOldNoob Le 1 octobre 2016 à 14:31

Donne nous aussi le code de ton formulaire, ça pour moi, tout comme l'a dit coucougael, ça ne viens pas de ton php.
PaulLavieille

PaulLavieille Le 1 octobre 2016 à 23:42

<?php
require_once('config/config.php');
if(isset($_POST['forminscription']))
{
   $pseudo = htmlspecialchars($_POST['pseudo']);
   $prenom = htmlspecialchars($_POST['prenom']);
   $certificate = htmlspecialchars($_POST['certificate']);
   $nom = htmlspecialchars($_POST['nom']);
   $user_ip = htmlspecialchars($_SERVER['REMOTE_ADDR']);
   $mdp = sha1($_POST['mdp']);
   $mdp2 = sha1($_POST['mdp2']);
   if(!empty($_POST['pseudo']) AND !empty($_POST['mdp']) AND !empty($_POST['mdp2']) AND!empty($_POST['prenom']) AND!empty($_POST['nom']))
   {
    $reqpseudo= $bdd->prepare("SELECT * FROM membres WHERE pseudo= ?");
    $reqpseudo->execute(array($pseudo));
    $reqpseudo= $reqpseudo->rowCount();
    if($reqpseudo == 0)
    {
        $pseudolength = strlen($pseudo);
        if($pseudolength <= 255)
        {
         if($mdp == $mdp2)
         {
           $longueurKey = 15;
           $key = "";
           for($i=1;$i<$longueurKey;$i++) {
             $key .= mt_rand(0,9);
           }
           $insertmbr = $bdd->prepare("INSERT INTO membres(pseudo, password, prenom, nom, user_ip, certificate, d_inscription) VALUES(?, ?, ?, ?, ?, ?, NOW())");
           $insertmbr->execute(array($pseudo, $mdp, $prenom, $nom, $user_ip, $certificate));
               $id_du_membre = $bdd->lastInsertId();
           if(isset($_FILES['avatar']) AND !empty($_FILES['avatar']['name']))
            {
               $tailleMax = 3145728;
               $extensionsValides = array('jpg', 'jpeg', 'gif', 'png');
               if($_FILES['avatar']['size'] <= $tailleMax)
               {
                  $extensionsUpload = strtolower(substr(strrchr($_FILES['avatar']['name'], '.'), 1));
                  if(in_array($extensionsUpload, $extensionsValides))
                  {
                     $chemin = "avatars/" .$id_du_membre.".".$extensionsUpload;
                     $resultat = move_uploaded_file($_FILES['avatar']['tmp_name'], $chemin);
                     if($resultat)
                     {
                        $updateAvatar = $bdd->prepare('INSERT INTO membres(avatar) VALUES (?)');
                        $updateAvatar->execute(array($id_du_membre.".".$extensionsUpload));
                     }
                     else
                     {
                        $erreur = "Erreur inconnue lors de l'importation de l'image.";
                     }
                  }
                  else
                  {
                     $erreur = "Votre photo de profil doit être au format: jpg, jpeg, gif ou png";
                  }
               }
               else
               {
                  $erreur = "Votre photo de profil ne doit pas dépasser 2Mo.";
               }
            }
           $erreur = "<div>Votre compte a bien été créé !</div>";
         }
         else
         {
           $erreur = "<div>Vos mots de passes ne correspondent pas !</div>";
         }          
      }
      else
      {
        $erreur = "<div>Votre pseudo ne doit pas dépasser 255 caractères !</div>";
      }
    }
    else
    {
      $erreur = "<div>Le pseudo est déjà utilisé !</div>";
    }
  }
  else
  {
    $erreur = "<div>Tous les champs doivent être complétés !</div>";
  }
}
?>
<html>
   <head>
      <title>Inscription</title>
      <meta charset="utf-8">
   </head>
   <body>
      <div align="center">
         <h2>Inscription</h2>
         <br /><br />
         <form method="POST" action="">
            <table>
               <tr>
                  <td align="right">
                     <label for="pseudo">Pseudo :</label>
                  </td>
                  <td>
                     <input type="text" placeholder="Votre pseudo" id="pseudo" name="pseudo" />
                  </td>
               </tr>
               <tr>
                  <td align="right">
                     <label for="mdp">Mot de passe :</label>
                  </td>
                  <td>
                     <input type="password" placeholder="Votre mot de passe" id="mdp" name="mdp" />
                  </td>
               </tr>
               <tr>
                  <td align="right">
                     <label for="mdp2">Confirmation du mot de passe :</label>
                  </td>
                  <td>
                     <input type="password" placeholder="Confirmez votre mdp" id="mdp2" name="mdp2" />
                  </td>
               </tr>
               
               <tr>
                  <td align="right">
                     <label for="prenom">Prénom :</label>
                  </td>
                  <td>
                     <input type="text" id="prenom" placeholder="Le prénom" name="prenom" />
                  </td>
               </tr>
               <tr>
                  <td align="right">
                     <label for="nom">Nom :</label>
                  </td>
                  <td>
                     <input type="text" id="nom" placeholder="Le nom" name="nom"/>
                  </td>
               </tr>
               <tr>
                  <td align="right">
                     <label>Certifié :</label>
                  </td>
                  <td>
                     <select name="certificate">
                           <option value="0">0</option>
                           <option value="1">1</option>
                        </select>
                  </td>
               </tr>
               <tr>
                  <td>
                     <label>Avatar :</label>
                  </td>
                  <td align="center">
                     <br />
                     <input type="file" name="avatar" value="Je m'inscris" />
                  </td>
               </tr>
               <tr>
                  <td></td>
                  <td align="center">
                     <br />
                     <input type="submit" name="forminscription" value="Je m'inscris" />
                  </td>
               </tr>
            </table>
         </form>
         <?php
         if(isset($erreur))
         {
            echo '<font color="red">'.$erreur."</font>";
         }
         ?>
      </div>
   </body>
</html>
Regardez ce code, il doit avoir la même erreur que moi (tout s'insere bien sauf l'avatar, il est pas dans le dossier de stockage non plus)

TheOldNoob

TheOldNoob Le 2 octobre 2016 à 17:49

Salut Paul,
Ligne 95, tu a oublier le enctype 😀

 <form method="POST" action="" enctype="multipart/form-data">
Et je suis a peu pres sur que Jake a fait la même chose, mais je l'ai déjà dit plus haut 😉
Vous devez être connecté pour poster une réponse. Se connecter ou Créer un compte