Probleme de syntaxe

Par Karim603, il y a 9 ans


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

Carouge10, il y a 9 ans

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, il y a 9 ans

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

Tarik El Jabiri, il y a 9 ans

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, il y a 9 ans

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

Tarik El Jabiri, il y a 9 ans

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, il y a 9 ans

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, il y a 9 ans

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"); }
Tarik El Jabiri, il y a 9 ans

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