1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194
|
<?php session_start();
if (empty($_POST['sent'])) { // Si on la variable est vide, on peut considérer qu'on est sur la page de formulaire
//On commence par s'assurer que le membre est connecté
if (isset ($_SESSION['membre_id'])) {
//On prend les infos du membre
$id=($_SESSION['membre_id']);
$query = $bdd->prepare('SELECT membre_pseudo, membre_mail, membre_avatar FROM membres WHERE membre_id=:id');
$query->bindValue(':id', $id, PDO::PARAM_INT);
$query->execute();
$data = $query->fetch();
echo '<div id="infosmembre">';
echo '<p class="textesimple">' . "Consulter votre : " . '<a href="voirprofil.php?action=consulter">' . "Profil" . '</a>';
echo '<h1 class="textesimple">' . "Modification de votre profil" . '</h1>';
echo '</div>';
echo '<div id="infosmembre">';
echo '<form method="post" action="voirprofil.php?action=modifier" enctype="multipart/form-data">
<fieldset><legend><div id="cadrepseu"><p class="classinscr"><b>Identifiants</b></p></div></legend>
<div id="cadrepseu"><p class="classinscr">Pseudo : <strong>' . htmlspecialchars($data['membre_pseudo']) . '</strong></p></div>
<div id="cadrepseu"><p class="classinscr"><label for="mdp">Nouveau mot de Passe :</label>
<input type="password" name="mdp" id="pass" value="' . $data['membre_mdp'] . '" /></p></div>
<div id="cadrepseu"><p class="classinscr"><label for="confirm">Confirmer le mot de passe :</label>
<input type="password" name="confirm" id="confirm" value="' . $data['membre_mdp'] . '"/></p></div>
</fieldset>
<fieldset><legend><div id="cadrepseu"><p class="classinscr"><b>Contacts</b></p></div></legend>
<div id="cadrepseu"><p class="classinscr"><label for="email">Votre adresse E_Mail :</label>
<input type="text" name="mail" id="email"
value="' . $data['membre_mail'] . '" /></p></div>
<fieldset><legend><div id="cadrepseu"><p class="classinscr"><b>Profil sur le forum</b></p></div></legend>
<div id="cadrepseu"><p class="classinscr"><label for="avatar">Changer votre avatar :</label>
<input type="file" name="avatar" id="avatar" />
(Taille max : 10 Mo)<br /><br />
<label><input type="checkbox" name="delete" value="Delete" />
Supprimer l avatar</label>
Avatar actuel :
<img src="./images/avatars/' . $data['membre_avatar'] . '"
alt="pas d avatar" /></p></div>
</fieldset>
<p class="classinscr"><input type="submit" value="Modifier son profil" />
<input type="hidden" id="sent" name="sent" value="1" />
</p></form>';
echo '</div>';
$query->CloseCursor();
} else {
echo '<p class="texteerror">' . "Vous n'avez pas accès à cette page." . '</p>';
echo '<p class="textewarning">' . "Vous devez être connecté pour accèder à cette page." . '</p>';
}
} else { //Cas du traitement
//On déclare les variables
$mdp_erreur = NULL;
$email_erreur1 = NULL;
$email_erreur2 = NULL;
$avatar_erreur = NULL;
$avatar_erreur1 = NULL;
$avatar_erreur2 = NULL;
$avatar_erreur3 = NULL;
//Encore et toujours notre belle variable $i :p
$i = 0;
$temps = time();
$email = $_POST['mail'];
$pass = ($_POST['mdp']);
$confirm = ($_POST['confirm']);
//Vérification du mdp
if ($pass != $confirm || empty($confirm) || empty($pass)) {
$mdp_erreur = '<p class="texteerror">' . "Votre mot de passe et votre confirmation diffèrent ou sont vides" . '</p>';
$i++;
}
//Vérification de l'adresse email
//Il faut que l'adresse email n'ait jamais été utilisée (sauf si elle n'a pas été modifiée)
//On commence donc par récupérer le mail
$id=($_SESSION['membre_id']);
$query = $bdd->prepare('SELECT membre_mail FROM membres WHERE membre_id=:id');
$query->bindValue(':id', $id, PDO::PARAM_INT);
$query->execute();
$data = $query->fetch();
if (strtolower($data['membre_mail']) != strtolower($email)) {
//Il faut que l'adresse email n'ait jamais été utilisée
$query = $bdd->prepare('SELECT COUNT(*) AS nbr FROM membres WHERE membre_mail=:mail');
$query->bindValue(':mail', $email, PDO::PARAM_STR);
$query->execute();
$mail_free = ($query->fetchColumn() == 0) ? 1 : 0;
$query->CloseCursor();
if (!$mail_free) {
$email_erreur1 = '<p class="textewarning">' . "Votre adresse email est déjà utilisé par un membre" . '</p>';
$i++;
}
//On vérifie la forme maintenant
if (!preg_match("#^[a-z0-9A-Z._-]+@[a-z0-9._-]{2,}\.[a-z]{2,4}$#", $email) || empty($email)) {
$email_erreur2 = '<p class="texteerror">' . "Votre nouvelle adresse E-Mail n'a pas un format valide" . '</p>';
$i++;
}
}
//Vérification de l'avatar
if (!empty($_FILES['membre_avatar']['size'])) {
//On définit les variables :
$maxsize = 100000; //Poid de l'image
$maxwidth = 500; //Largeur de l'image
$maxheight = 500; //Longueur de l'image
//Liste des extensions valides
$extensions_valides = array('jpg', 'jpeg', 'gif', 'png', 'bmp');
if ($_FILES['membre_avatar']['error'] > 0) {
$avatar_erreur = '<p class="texteerror">' . "Erreur lors du tranfsert de l'avatar : " . '</p>';
}
if ($_FILES['membre_avatar']['size'] > $maxsize) {
$i++;
$avatar_erreur1 = "Le fichier est trop gros :
(" . $_FILES['membre_avatar']['size'] . " Octets
contre " . $maxsize . " Octets)";
}
$image_sizes = getimagesize($_FILES['membre_avatar']['tmp_name']);
if ($image_sizes[0] > $maxwidth OR $image_sizes[1] > $maxheight) {
$i++;
$avatar_erreur2 = "Image trop large ou trop longue :
(<strong>" . $image_sizes[0] . "x" . $image_sizes[1] . " contre
" . $maxwidth . "x" . $maxheight . ")";
}
$extension_upload = strtolower(substr(strrchr($_FILES['membre_avatar']['name'], '.'), 1));
if (!in_array($extension_upload, $extensions_valides)) {
$i++;
$avatar_erreur3 = '<p class="texteerror">' . "Extension de l'avatar incorrecte" . '</p>';
}
}
echo '<div id="mdup"><h1 class="textesimple">'."Modification d'un profil".'</h1></div>';
if ($i == 0) { // Si $i est vide, il n'y a pas d'erreur
if (!empty($_FILES['membre_avatar']['size'])) {
$nomavatar = move_avatar($_FILES['membre_avatar']);
$id=($_SESSION['membre_id']);
$query = $bdd->prepare('UPDATE membres SET membre_avatar=:avatar WHERE membre_id=:id');
$query->bindValue(':avatar', $nomavatar, PDO::PARAM_STR);
$query->bindValue(':id', $id, PDO::PARAM_INT);
$query->execute();
$query->CloseCursor();
}
//Une nouveauté ici : on peut choisis de supprimer l'avatar
if (isset($_POST['delete'])) {
$id=($_SESSION['membre_id']);
$query = $bdd->prepare('UPDATE membres SET membre_avatar=0 WHERE membre_id=:id');
$query->bindValue(':id', $id, PDO::PARAM_INT);
$query->execute();
$query->CloseCursor();
}
echo '<div id="MR">';
echo '<h1 class="textevalide">'."Modification terminée".'</h1>';
echo '<p class="textevalide">'."Votre profil a été modifié avec succès !".'</p>';
echo '<p class="textesimple">'. "Cliquez ".'<a href="./index.php">'." ici ".'</a>'."pour revenir à la page d accueil.".'</p>';
echo '<p class="textesimple">'. "Cliquez ".'<a href="./voirprofil.php?action=consulter">'." ici ".'</a>'."pour consulter votre profil.".'</p>';
echo '</div>';
$query=$bdd->prepare('UPDATE membres SET membre_mdp=:mdp, membre_mail=:mail WHERE membre_id=:id');
$query->bindValue(':mdp',$pass,PDO::PARAM_STR);
$query->bindValue(':mail',$email,PDO::PARAM_STR);
$query->bindValue(':id',$id,PDO::PARAM_INT);
$query->execute();
$query->CloseCursor();
} else {
echo '<div id="MI">';
echo '<h1 class="texteerror">Modification interrompue</h1>';
echo '<p class="texteerror">Une ou plusieurs erreurs se sont produites pendant la modification du profil</p>';
echo '<p class="texteerror">' . $i . ' erreur(s)</p>';
echo '<p class="texteerror">' . $mdp_erreur . '</p>';
echo '<p class="texteerror">' . $email_erreur1 . '</p>';
echo '<p class="texteerror">' . $email_erreur2 . '</p>';
echo '<p class="texteerror">' . $avatar_erreur . '</p>';
echo '<p class="texteerror">' . $avatar_erreur1 . '</p>';
echo '<p class="texteerror">' . $avatar_erreur2 . '</p>';
echo '<p class="texteerror">' . $avatar_erreur3 . '</p>';
echo '<p class="textewarning"> Cliquez <a href="./voirprofil.php?action=modifier">ici</a> pour recommencer</p>';
echo '</div>';
}
}
?> |
Partager