Bonjour, je suis en train de faire un espace membre et j'en suis a la photo de profil mais j'ai un erreur de syntaxe énervante a cause d'une simple accolade mais la ligne de code n'est pas précise l'erreur me dit que c'est a la fin du code html du coup j'ai enlevé tout ce qui est a la fin du code html(donc le else qui te redirige vers la connexion)mais apres ça me met une page blanche

voici le 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['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 durant 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 2Mo";
   }

}
?>
<html>
   <head>
      <title>TUTO PHP</title>
      <meta charset="utf-8">
   </head>
   <body>
      <div align="center">
         <h2>Edition de mon profil</h2>
         <form method="POST" action="" enctype="multipart/form-data">
            <div align="left">
            <label>Pseudo :</label>
            <input type="text" name="newpseudo" placeholder="Pseudo" value="<?php echo $user['pseudo'];?>"> <br /><br />
            <label>Mail :</label>
            <input type="text" name="newmail" placeholder="Mail" value="<?php echo $user['mail'];?>"> <br /> <br />
            <label>Mot de passe :</label>
            <input type="password" name="newmdp1" placeholder="Mot de passe"> <br /> <br />
            <label>Confirmer votre mot de passe :</label>
            <input type="password" name="newmdp2" placeholder="Confirmation de passe"> <br /> <br />
            <input type="submit" value="Mettre a jour mon profil !">
         </form>
         <?php if (isset($msg)) {echo $msg;} ?>
         </div>
      </div>
   </body>
</html>
<?php   
}
else
{
   header("Location: connexion.php");
}
?>

8 réponses


Tarik El Jabiri
Réponse acceptée

je veut juste savoir que fait cette page dans ton application. et pourquoi le redirection vers connexion.php

Bonsoir, il y a une accolade fermante en trop.
Le 1er if se ferme à la fois avant le code html et après celui-ci

Karim603
Auteur

j'ai essayé ça mais ca me redirige tout le temps dans connexion c'est bizarre

salut,

tu dois enlever cette accolade :

...
   </body>
</html>
<?php  
//cette accolade qui suit
}
else
{
   header("Location: connexion.php");
}
?>

comme ça :

...
   </body>
</html>
<?php
else
{
   header("Location: connexion.php");
}
?>

mais la page va faire un redirect to coonexion.php toujours il faut faire ça a lla fin du traitement et le cas qui n'est pas d'erreur .
dans ce formulaire tu n'a pas un champ pour le avatar non.

mais j'ai pas compris cette page il fait quoi et pour quoi ce redirect a la page connexion.php

Karim603
Auteur

J'ai corrigé l'erreur pour le champ mais ça me met toujours un probleme de syntaxe mais pour else cette fois ci

salut,
oui car tu as mentenant trois condition qui vont executés la premiere c'est :

<?php
if(isset($_FILES['avatar']) AND !empty($_FILES['avatar']['name']))

si elle est vrai il va executer le code interieure mais s'il n'est pas vrai il va passer au 2eme :

 <?php if (isset($msg)) {echo $msg;} ?>

cette ligne qui a crée le probleme il tester s'il ya un message ila va afficher le message sinon il va executer la derniere possibilite qui est celle la :

<?php
else
{
   header("Location: connexion.php");
}
?>

mais ce n'est pas ce que tu veut il faut comprendre le deroulement de ton code il analysé c'est le debuggage. il faut debugger sont code .

hope ça marche.
desole pour le français qui est un peut mal :)

Karim603
Auteur

Donc si j'ai bien compris si le message ne s'affiche pas il y a une redirection alors que normalement ce code:
n'a pas de else c'est bien ça ?

<?php if (isset($msg)) {echo $msg;} ?>
Karim603
Auteur

Tu peux me debugger j'ai tout essayé mais ca ne marche pas svp j'ai enlevé ce code et je l'ai mit apres le else a la fin du code :

<?php if (isset($msg)) {echo $msg;} ?>

voici le code (tu me dis juste les erreurs a remplacer) :

<?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['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: editionprofil.php?id=' . $_SESSION['id']);
         } 
         else 
         {
            $msg = "Erreur durant 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 2Mo";
   }

?>
<html>
   <head>
      <title>TUTO PHP</title>
      <meta charset="utf-8">
   </head>
   <body>
      <div align="center">
         <h2>Edition de mon profil</h2>
         <form method="POST" action="" enctype="multipart/form-data">
            <div align="left">
            <label>Pseudo :</label>
            <input type="text" name="newpseudo" placeholder="Pseudo" value="<?php echo $user['pseudo'];?>"> <br /><br />
            <label>Mail :</label>
            <input type="text" name="newmail" placeholder="Mail" value="<?php echo $user['mail'];?>"> <br /> <br />
            <label>Mot de passe :</label>
            <input type="password" name="newmdp1" placeholder="Mot de passe"> <br /> <br />
            <label>Confirmer votre mot de passe :</label>
            <input type="password" name="newmdp2" placeholder="Confirmation de passe"> <br /> <br />
            <input type="file" name="avatar">
            <br /> <br />
            <input type="submit" value="Mettre a jour mon profil !">
         </form>
         <?php if (isset($msg)) {echo $msg;} ?>
         </div>
      </div>
   </body>
</html>
<?php   
else
{
   header("Location: connexion.php");
}