Editer un profil
dimi
-
jordane45 Messages postés 38486 Date d'inscription Statut Modérateur Dernière intervention -
jordane45 Messages postés 38486 Date d'inscription Statut Modérateur Dernière intervention -
bonjour j'ai crée une page php appelé editionprofil.php dans laquelle je peut modifier ma photo de profil le problème qui me dérange est que l'utilisateur ne peut pas changer son mot de passe et changer son profil à sa guise surement à cause d'une erreur que j'ai faite SVP aidez moi à résoudre cette erreur voici ma page
EDIT : Ajout des balises de code !
<?php session_start(); $bdd = new pdo('mysql:host=localhost;dbname=espace_membre', 'root', ''); if(isset($_SESSION['id'])) { $requser = $bdd->prepare("SELECT * FROM membres WHERE id = ?"); $requser->execute(array($_SESSION['id'])); $user = $requser->fetch(); if(isset($_POST['newnom']) AND !empty($_POST['newnom']) AND $_POST['newnom'] != $user['nom']) { $newnom = htmlspecialchars($_POST['newnom']); $insertnom = $bdd->prepare("UPDATE membres SET nom = ? WHERE id = ?"); $insertnom->execute(array($newnom, $_SESSION['id'])); header('Location:profil.php?id='.$_SESSION['id']); } if(isset($_POST['newmail']) AND !empty($_POST['newmail']) AND $_POST['newmail'] != $user['mail']) { $newmail = htmlspecialchars($_POST['newmail']); $insertmail = $bdd->prepare("UPDATE membres SET mail = ? WHERE id = ?"); $insertmail->execute(array($newmail, $_SESSION['id'])); header('Location:profil.php?id='.$_SESSION['id']); } if(isset($_POST['newmdp1']) AND !empty($_POST['newmdp1']) AND isset($_POST['newmdp2']) AND !empty($_POST['newmdp2'])) { $mdp1 = sha1($_POST['newmdp1']); $mdp2 = sha1($_POST['newmdp2']); if($mdp1 == $mdp2) { $insertmdp = $bdd->prepare("UPDATE membres SET motdepasse = ? WHERE id = ?"); $insertmdp->execute(array($mdp1, $_SESSION['id'])); header('Location:profil.php?id='.$_SESSION['id']); } else { $msg = "Vos 02 mots de passes ne correspondent pas !"; } } if(isset($_FILES['avatar']) AND !empty($_FILES['avatar']['name'])) { $tailleMax = 2097152; $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 = "membres/avatars/".$_SESSION['id'].".".$extensionsUpload; $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'].".".$extensionsUpload, 'id' => $_SESSION['id'] )); header('Location:profil.php?id='.$_SESSION['id']); } else { $msg = "Erreur durant l'importation de votre photo profil"; } } else { $msg = "Votre Photo profil doit etre au format jpg jpeg gif et png"; } } else { $msg = "Votre photo de profil ne doit pas dépasser 2Mo"; } } ?> <html> <head> <title>Wotrom.com</title> <meta charset="utf-8"> </head> <body> <div align="left"> <h2>Editer Votre profil</h2> <form method="POST" action="" enctype="multipart/form-data"> <input type="text" name="newnom" placeholder="Votre Nom" value="<?php echo $user['nom']; ?>" /></br></br> <input type="email" name="newmail" placeholder="Votre Mail" value="<?php echo $user['mail']; ?>" /></br></br> <input type="password" name="newmdp" placeholder="Votre mot de passe" /></br></br> <input type="password" name="newmdp2" placeholder="confirmer Votre MDP" /></br></br> <input type="file" name="avatar" /></br></br> <input type="submit" value="Mettre a jour mon profil !" /></br></br> <input type="reset" value="Annuler" /></br></br> </form> <?php if(isset($msg)) {echo $msg;} ?> </div> </body> </html> <?php } else { header("Location: connexion.php"); } ?>
EDIT : Ajout des balises de code !
A voir également:
- Editer un profil
- Voir qui regarde mon profil facebook - Guide
- Qui regarde mon profil instagram - Guide
- Capture d'écran photo de profil whatsapp - Accueil - Messagerie instantanée
- Photo de profil - Guide
- Profil netflix - Guide
3 réponses
Bonjour
Ton mot de passe s'appelle newmdp dans don formulaire :
mais tu testes newmdp1 dans ton traitement :
Ton mot de passe s'appelle newmdp dans don formulaire :
<input type="password" name="newmdp" placeholder="Votre mot de passe" /></br></br>
mais tu testes newmdp1 dans ton traitement :
if(isset($_POST['newmdp1'])...
Bonjour,
Pleins d'erreurs.......
Du code placé hors de tes IF alors qu'il devrait s'y trouver
Des variables mal nommées...
Le code mal agencé...
Je t'invite vivement à lire et à appliquer le contenu de ces deux liens :
https://forums.commentcamarche.net/forum/affich-37584941-php-pdo-gerer-les-erreurs
https://forums.commentcamarche.net/forum/affich-37584947-php-gestion-des-erreurs-debogage-et-ecriture-du-code
Puis à essayer ceci :
Pleins d'erreurs.......
Du code placé hors de tes IF alors qu'il devrait s'y trouver
Des variables mal nommées...
Le code mal agencé...
Je t'invite vivement à lire et à appliquer le contenu de ces deux liens :
https://forums.commentcamarche.net/forum/affich-37584941-php-pdo-gerer-les-erreurs
https://forums.commentcamarche.net/forum/affich-37584947-php-gestion-des-erreurs-debogage-et-ecriture-du-code
Puis à essayer ceci :
<?php session_start(); //Affichage des erreurs de code error_reporting(E_ALL); ini_set('display_errors', TRUE); ini_set('display_startup_errors', TRUE); //Connexion à la BDD (tu ferais mieux de la mettre dans un ficier à part que tu n'aurais qu'à inclure dans tes différentes // pages au lieu de la ré-écire à chaque fois... try{ $bdd =new PDO('mysql:host=localhost;dbname=espace_membre; charset=utf8', 'root', ''); // Activation des erreurs PDO $bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); // mode de fetch par défaut : FETCH_ASSOC / FETCH_OBJ / FETCH_BOTH $bdd->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC); } catch(PDOException $e) { die('Erreur : ' . $e->getMessage()); } // fonction pour effectuer les requêtes SQL sans avoir à réécrire à chaque fois les try/catch function executeQuery($sql,$datas=NULL){ global $bdd; try{ $requete = $bdd -> prepare($sql) ; $requete->execute($datas); }catch(Exception $e){ // en cas d'erreur : echo " Erreur ! ".$e->getMessage(); echo " Les datas : " ; print_r($datas); } return $requete; } /** * Mise à jour des infos du membre */ function update_membres($id, $Nom = NULL ,$Email= NULL ,$Mdp = NULL, $avatar=NULL){ $a_datas = array(); $arrTmp = array(); if($Nom){ $arrTmp[] = "nom = ?"; $a_datas[] = $Nom; } if($Email){ $arrTmp[] = "mail = ?"; $a_datas[] = $Email; } if($Mdp){ $arrTmp[] = "motdepasse = ?"; $a_datas[] = $Mdp; } if($avatar){ $arrTmp[] = "avatar = ?"; $a_datas[] = $avatar; } //on ajoute l'ID dans les DATAS pour la mise à jour $a_datas[] = $id; $datasAUpdate = join(",",$arrTmp);// on genere les champs à mettre à jour //on prepare la requête $sql = "UPDATE membres SET ". $datasAUpdate ." WHERE id = ? "; return executeQuery($sql,$a_datas); } /** Fonction de redirection sur le profil du user */ function redirectProdil($id){ // header('Location:profil.php?id='.$id); // on desactive les redirections le temps des tests.. sinon tu ne peux pas voir les erreurs ! // exit(); //toujours mettre un exit après une redirection ! } //récupération PROPRE des variables AVANT de les utiliser $id = !empty($_SESSION['id']) ? $_SESSION['id'] : NULL; $newnom = !empty($_POST['newnom']) ? $_POST['newnom'] : NULL; $newmail = !empty($_POST['newmail']) ? $_POST['newmail'] : NULL; $newmdp1 = !empty($_POST['newmdp1']) ? $_POST['newmdp1'] : NULL; $newmdp2 = !empty($_POST['newmdp2']) ? $_POST['newmdp2'] : NULL; $msg = array(); //debut du traitement if($id) { //recupération des informations de l'utilisateur //preparation de la requetes et de ses variables $sql = "SELECT * FROM membres WHERE id = ?"; $datas = array($id); //Execution de la requete $requete = executeQuery($sql,$datas); $user = $requete->fetch(); $usr_nom = $user['nom']; $NomToInsert = $newnom != $usr_nom ? $newnom : NULL; $mailToInsert = $newmail != $user['mail'] ? $newmail : NULL; $mdpToTinsert = !empty($mdp1) && $mdp1 == $mdp2 ? sha1($mdp1) : NULL; $NewAvatar = !empty($uploadedAvatar) ? $id.".".$extensionsUpload : NULL; $avatar = !empty($_FILES['avatar']) ? $_FILES['avatar'] : NULL; $avatar_Name = !empty($avatar['name']) ? $avatar['name'] : NULL; $avatar_Size = !empty($avatar['size']) ? $avatar['size'] : NULL; $avatar_TmpName = !empty($avatar['tmp_name']) ? $avatar['tmp_name'] : NULL; if($avatar_Name) { $tailleMax = 2097152; $extensionsValides = array('jpg','jpeg','gif','png'); if( $avatar_Size <= $tailleMax) { $extensionsUpload = strtolower(substr(strrchr($avatar_Name, '.'), 1)); if(in_array($extensionsUpload, $extensionsValides)){ $uploadedAvatar = $id.".".$extensionsUpload; $chemin = "membres/avatars/".$uploadedAvatar; if(move_uploaded_file($avatar_TmpName, $chemin)) { } else { $uploadedAvatar = NULL; $msg[] = "Erreur durant l'importation de votre photo profil"; } } else { $uploadedAvatar = NULL; $msg[] = "Votre Photo profil doit etre au format jpg jpeg gif et png"; } } else { $uploadedAvatar = NULL; $msg[] = "Votre photo de profil ne doit pas dépasser 2Mo"; } } if($mdp1 != $mdp2){ $msg[] = "Vos 02 mots de passes ne correspondent pas !"; } if(empty($msg)){ // si pas d'erreur... on fait la redirection redirectProdil($id); } }else{ header("Location: connexion.php"); exit(); } ?> <html> <head> <title>Wotrom.com</title> <meta charset="utf-8"> </head> <body> <div align="left"> <h2>Editer Votre profil</h2> <form method="POST" action="" enctype="multipart/form-data"> <input type="text" name="newnom" placeholder="Votre Nom" value="<?php echo $user['nom']; ?>" /></br></br> <input type="email" name="newmail" placeholder="Votre Mail" value="<?php echo $user['mail']; ?>" /></br></br> <input type="password" name="newmdp" placeholder="Votre mot de passe" /></br></br> <input type="password" name="newmdp2" placeholder="confirmer Votre MDP" /></br></br> <input type="file" name="avatar" /></br></br> <input type="submit" value="Mettre a jour mon profil !" /></br></br> <input type="reset" value="Annuler" /></br></br> </form> <?php if(!empty($msg)) { foreach($msg as $err){ echo $err; } } ?> </div> </body> </html>