Mot de passe se change tout seul

Signaler
Messages postés
31
Date d'inscription
mercredi 18 avril 2007
Statut
Membre
Dernière intervention
23 mars 2013
-
Messages postés
2483
Date d'inscription
jeudi 30 novembre 2006
Statut
Membre
Dernière intervention
14 janvier 2011
-
Bonjour,

J'ai suivi le tuto suivant Tuto Forum pour créer un forum sur mon site.
Tout fonctionne bien, le seul problème et que quand j'envoie une modification du profil par exemple pour changer d'avatar, le mot de passe se change dans la base de donnée par le code MD5 suivant : d41d8cd98f00b204e9800998ecf8427e
et ce code correspond à une valeur nulle. Donc à la première modification du profil il prend en compte le changement de mot de passe même si la case est vide.

Et je ne sais pas comment régler ce problème Pourriez vous m'aider ?


source de ma page ModifierProfil :
<?php
//Cette fonction doit être appelée avant tout code html
session_start();
?>
 
<?php
//On donne ensuite un titre à la page, puis on appelle notre fichier debut.php
$titre =  "Modification du profil";
include("includes/debut.php");
?>





<?php
//Maintenant, on se connecte à la base de données
include("includes/identifiants.php");
mysql_connect($adresse, $nom, $motdepasse);
mysql_select_db($database);
 
//Encore est toujours notre belle variable $i :p
$i = 0;
$temps = time(); 
$signature = mysql_real_escape_string($_POST['signature']);
$email = mysql_real_escape_string($_POST['email']);
$msn = mysql_real_escape_string($_POST['msn']);
$website = mysql_real_escape_string($_POST['website']);
$localisation = mysql_real_escape_string($_POST['localisation']);
$pass = md5($_POST['password']);
$confirm = md5($_POST['confirm']);


//Vérification du mdp
if ($pass != $confirm || empty($confirm) || empty($pass))
{
$mdp_erreur = "Votre mot de passe et votre confirmation diffèrent ou sont vides";
$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)
if (strtolower($data1['membre_email']) != strtolower($email))
{
        $nombremail mysql_result(mysql_query("SELECT COUNT(*) FROM forum_membres WHERE membre_email '".$email."' AND membre_id != ".$_SESSION['id']), 0);

        if ($nombremail!= 0)
        {
        $email_erreur1 = "Votre adresse email est déjà utilisée par un membre";
        $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 = "Votre nouvelle adresse E-Mail n'a pas un format valide";
        $i++;
        }
}
//Vérification de l'adrese msn
if (!preg_match("#^[a-z0-9._-]+@[a-z0-9._-]{2,}\.[a-z]{2,4}$#", $msn) && !empty($msn))
{
$msn_erreur = "Votre nouvelle adresse MSN n'a pas un format valide";
$i++;
}

//Vérification de la signature
if (strlen($signature) > 1000)
{
$signature_erreur = "Votre nouvelle signature est trop longue";
$i++;
}
 
 
//Vérification de l'avatar
 
        if (!empty($_FILES['avatar']['size']))
        {
        //On définit les variables :
        $maxsize = 100000; //Poid de l'image
        $maxwidth = 100; //Largeur de l'image
        $maxheight = 100; //Longueur de l'image
        //Liste des extensions valides
        $extensions_valides = array( 'jpg' , 'jpeg' , 'gif' , 'png', 'bmp' );
 
        if ($_FILES['avatar']['error'] > 0)
        {
        $avatar_erreur = "Erreur lors du tranfsert de l'avatar : ";
        }
        if ($_FILES['avatar']['size'] > $maxsize)
        {
        $i++;
        $avatar_erreur1 = "Le fichier est trop gros :
        ( ".$_FILES['avatar']['size']." Octets 
        contre ".$maxsize." Octets)";
        }
 
        $image_sizes  = getimagesize($_FILES['avatar']['tmp_name']);
        if ($image_sizes[0] > $maxwidth OR $image_sizes[1] > $maxheight)
        {
        $i++;
        $avatar_erreur2 =  "Image trop large ou trop longue :
        ( ".$image_sizes[0]."x".$image_sizes[1]."  contre
        ".$maxwidth."x".$maxheight.")";
        }
 
        $extension_upload  = strtolower(substr(  strrchr($_FILES['avatar']['name'], '.')  ,1));
        if (!in_array($extension_upload,$extensions_valides) )
        {
                $i++;
                $avatar_erreur3 = "Extension de l'avatar incorrecte";
        }
}
?>





<?php
echo'[./voirprofil.php?action=modifier Modification du profil]

';
 
if ($i == 0) // Si $i est vide, il n'y a pas d'erreur
{
        if (!empty($_FILES['avatar']['size']))
{
//On déplace l'avatar
$avatar = time();
$nomavatar = str_replace(' ','',$avatar).".".$extension_upload;
$avatar = "images/avatars/".str_replace(' ','',$avatar).".".$extension_upload;
move_uploaded_file($_FILES['avatar']['tmp_name'],$avatar);
mysql_query("UPDATE forum_membres SET membre_avatar'" .$nomavatar. "' WHERE membre_id '".$_SESSION['id']."'") or die (mysql_error());
}
 
        //Une nouveauté ici : on peut choisisr de supprimer l'avatar
        if (isset($_POST['delete']))
        {
                mysql_query('DELETE membre_avatar 
                FROM forum_membres WHERE membre_id = '.$_SESSION['id']);
        }
 
        echo'Modification terminée
';
        echo'Votre profil a été modifié avec succès !

';
        echo'Cliquez [./index.php ici] 
        pour revenir à la page d accueil

';
 
        //On modifie la table
 
        mysql_query("
        UPDATE forum_membres
        SET  membre_mdp ='".$pass."' , membre_email = '".$email."' ,
        membre_msn '".$msn."' , membre_siteweb '".$website."',
        membre_signature = '".$signature."' ,
        membre_localisation = '".$localisation."'
        WHERE membre_id = '".intval($_SESSION['id'])."'") or die (mysql_error());
 
        //Et on définit de nouvelles variables de sesssion
        //Pour celà on a besoin de la bdd
        $requete = mysql_query('
        SELECT membre_id, membre_rang
        FROM forum_membres
        WHERE membre_id = '.$_SESSION['id']);
 
        if ($data = mysql_fetch_assoc($requete))
        {
        $_SESSION['id'] = $data['membre_id'];
        $_SESSION['level'] = $data['membre_rang'];
        }
}
else
{
        echo'Modification interrompue
';
        echo'Une ou plusieurs erreurs se sont produites pendant la modification du profil

';
        echo''.$i.' erreur(s)

';
        echo''.$mdp_erreur.'

';
        echo''.$email_erreur1.'

';
        echo''.$email_erreur2.'

';
        echo''.$msn_erreur.'

';
        echo''.$signature_erreur.'

';
        echo''.$avatar_erreur.'

';
        echo''.$avatar_erreur1.'

';
        echo''.$avatar_erreur2.'

';
        echo''.$avatar_erreur3.'

';
        echo' Cliquez
 [./voirprofil.php?action=modifier ici] pour recommencer

';
}
?>



</html>


/////a44icus/////

3 réponses

Messages postés
2483
Date d'inscription
jeudi 30 novembre 2006
Statut
Membre
Dernière intervention
14 janvier 2011
17
Salut,

$pass = md5($_POST['password']);


Peut-être qu'en vérifiant d'abord sur $_POST['password'] est vide ou non et en assignantENSUITE la valeur, tu aurais ce que tu attends ?
Là, dans tous les cas, $pass vaut quelque chose... Donc si tu fais une mise à jour sans entrer de mot de passe, il sera mis à jour également.
Rien d'étonnant finalement ;)

--
Neige

Souvent la réponse à votre question se trouve dans la doc. Commencez par là ;)
Messages postés
31
Date d'inscription
mercredi 18 avril 2007
Statut
Membre
Dernière intervention
23 mars 2013

Merci pour ta réponse, par contre je début en php donc si tu pouvais m'en dire plus :) ..
Merci beaucoup.


/////a44icus/////
Messages postés
2483
Date d'inscription
jeudi 30 novembre 2006
Statut
Membre
Dernière intervention
14 janvier 2011
17
Ben... vérifier que $_POST['password'] n'est pas vide.
Et ne pas mettre à jour le champ password dans la base de données s'il ne doit pas l'être (si un nouveau mot de passe n'a pas été saisi).

C'est rien de technique, juste de la logique.

--
Neige

Souvent la réponse à votre question se trouve dans la doc. Commencez par là ;)