Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD
PHP & SGBD Forum d'entraide sur les SGBD avec PHP. Avant de poster : FAQ BDD, toutes les FAQ PHP, cours BDD et sources BDD
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 20/02/2008, 11h00   #1
Membre à l'essai
 
Étudiant
Inscription : janvier 2007
Messages : 121
Détails du profil
Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : janvier 2007
Messages : 121
Points : 24
Points : 24
Par défaut [SQL] md5 et base de données

Bonjour,
j'ai une page web d'identification en php avec le formualaire en html.
Voici mon formulaire:
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
 <form method="post" action = "index.php">
		 <table>
					 <tr>
				 	 <td>Nom utilisateur:</td>
					 <td><input type="username" name="nomutilisateur"></td>
					 </tr>
 
					 <tr>
				     <td> Mot de passe:</td>
					 <td><input type="password" name="pass"></td>
					 </tr>   
						<div id="btnouvrirsession">	  
					 <tr>
					 <td><input type="submit" value="Ouvrir une session" style="color:#99CCFF; background-color:#3399FF;"/	></td>
					 </tr>
				  </div>
		</table>
   </form>
Aprés je fais un traitement pour comparer les données insérées avec celle de la base de données.
Voici le code php:
Code :
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
<?php
//reprise des valeurs insérées dans le text box
 
$nomutilisateur = $_POST["nomutilisateur"];
$pass = $_POST["pass"];
 
 
 
//on va dans la table pour voir si l'utilisateur est dans la table
//pseudo et mdp correspondent aux noms des colonnes dans ma table user 
// 
 
$requete = "SELECT * FROM admin WHERE login_admin = '".$nomutilisateur."' AND mdp_admin = '".$pass."'";
$resultat = mysql_query($requete);
$nbres = mysql_num_rows($resultat);
 
//la requête est bien exécutée puisqu'elle affiche un c'est à dire que une ligne comporte cet utilisateur
 
 
 
if ( $nbres == 0 ) //on scann la table pour voir si l'utilisateur est présent
{//si non alors
    echo '';
}
else
 
{//si oui
$_SESSION['user'] = 'ok';
//la redirection ce fait en javascript car il y a des echo avant ce qui empêche surement le header de bien fonctionner
echo '
<script language="javascript" type="text/javascript">
document.location = "first.php";
</script>
';
}
 
//$date = date("d-m-Y");
//$heure = date("H:i:s");
//echo ("Nous sommes le $date et il est $heure");
 
?>
Ma question est la suivante:
comment puis je crypter les mots de passe que j'ai déjà dans ma base de données en md5?
luciedoudou est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/02/2008, 11h11   #2
Invité de passage
 
Inscription : février 2008
Messages : 20
Détails du profil
Informations personnelles :
Âge : 32

Informations forums :
Inscription : février 2008
Messages : 20
Points : 4
Points : 4
Comme cela il me semble:

$pass=md5($_POST["pass"]);

MrGroar est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/02/2008, 11h23   #3
Membre à l'essai
 
Étudiant
Inscription : janvier 2007
Messages : 121
Détails du profil
Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : janvier 2007
Messages : 121
Points : 24
Points : 24
Je rentre le mot de passe et avec ta technique ça doit le transformer direct en format md5.
Mais les mots de passe dans la base de données eux ne sont pas du tout en md5. Donc quand il compare c'est faux et je ne peux pas accéder aux autres pages de mon site.
luciedoudou est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/02/2008, 11h36   #4
Membre éprouvé
 
Homme
Développeur informatique
Inscription : janvier 2005
Messages : 349
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 50
Localisation : Belgique

Informations professionnelles :
Activité : Développeur informatique
Secteur : Conseil

Informations forums :
Inscription : janvier 2005
Messages : 349
Points : 439
Points : 439
Salut,

La foncton md5 existe aussi sous mysql donc :

Code :
update matable set motdepasse = md5(motdepasse)
beeboo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/02/2008, 11h48   #5
Membre à l'essai
 
Étudiant
Inscription : janvier 2007
Messages : 121
Détails du profil
Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : janvier 2007
Messages : 121
Points : 24
Points : 24
Alors j'ai fait comme tu m'as indiqué
update personne set mdp = 'md5(motdepasse)';
avec personne le nom de la table
mdp le nom de la colonne
et
motdepasse le mot de passe
mais est ce normal que maintenant dans ma colonne mdp
tous les mots de passe sont notés comme ca md5(motdepasse)?
luciedoudou est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/02/2008, 11h57   #6
Membre éprouvé
 
Homme
Développeur informatique
Inscription : janvier 2005
Messages : 349
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 50
Localisation : Belgique

Informations professionnelles :
Activité : Développeur informatique
Secteur : Conseil

Informations forums :
Inscription : janvier 2005
Messages : 349
Points : 439
Points : 439
C'est pcq tu as mis des ' autour de md5(motdepasse). La requête a donc mis la chaine de caractères 'md5(motdepasse)' au lieu d'appeler la fonction md5 avec l'argument motdepasse
beeboo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/02/2008, 12h03   #7
Membre à l'essai
 
Étudiant
Inscription : janvier 2007
Messages : 121
Détails du profil
Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : janvier 2007
Messages : 121
Points : 24
Points : 24
Si je ne mets pas les '' il prend le mot de passe pour le nom d'une colonne
#1054 - Unknown column 'motdepasse' in 'field list'
luciedoudou est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/02/2008, 12h13   #8
Membre à l'essai
 
Étudiant
Inscription : janvier 2007
Messages : 121
Détails du profil
Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : janvier 2007
Messages : 121
Points : 24
Points : 24
Ok j'ai trouvé
update personne set mdp = md5('motdepasse');
ca a bien haché mais c'est le même code a toute les lignes
luciedoudou est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/02/2008, 12h13   #9
Membre expérimenté
 
Inscription : août 2005
Messages : 515
Détails du profil
Informations forums :
Inscription : août 2005
Messages : 515
Points : 557
Points : 557
Bonjour,
si vous voulez crypter tous les mots de passe de votre table, vous devez vous assurer de modifier le champ `mdp` de votre table et de le rendre compatible avec le resultat de la fonction MD5. Ensuite, tapez la requête suivante :

Code :
UPDATE `personne` SET `mdp` = MD5(`mdp`);
Avec cette requête, si vous avez 10.000 membres, les 10.000 mots de passe seront cryptés.

Cordialement,
DaRiaN.
DaRiaN est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/02/2008, 12h15   #10
Membre à l'essai
 
Étudiant
Inscription : janvier 2007
Messages : 121
Détails du profil
Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : janvier 2007
Messages : 121
Points : 24
Points : 24
dans ce cas la il faut les faire un par un?
luciedoudou est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/02/2008, 13h33   #11
Membre éprouvé
 
Homme
Développeur informatique
Inscription : janvier 2005
Messages : 349
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 50
Localisation : Belgique

Informations professionnelles :
Activité : Développeur informatique
Secteur : Conseil

Informations forums :
Inscription : janvier 2005
Messages : 349
Points : 439
Points : 439
dans mon exemple, motdepase est un champ , donc :

update matable set motdepasse = md5(motdepasse)

veut dire :
mettre à jour la table matable en mettant dans le champ motdepasse la valeur retournée par la fonction md5() avec, comme valeur de paramètre, le contenu du champ motdepasse et ceci pour tous les enregistrements.
beeboo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/02/2008, 13h52   #12
Membre expérimenté
 
Inscription : août 2005
Messages : 515
Détails du profil
Informations forums :
Inscription : août 2005
Messages : 515
Points : 557
Points : 557
Citation:
Envoyé par luciedoudou Voir le message
dans ce cas la il faut les faire un par un?
Non, ma requête effectue la modification sans discrimination, si vous voulez limiter à un utilisateur, utilisez la clause WHERE.
DaRiaN est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/02/2008, 13h52   #13
Membre émérite
 
Inscription : juillet 2005
Messages : 775
Détails du profil
Informations personnelles :
Âge : 29

Informations forums :
Inscription : juillet 2005
Messages : 775
Points : 858
Points : 858
Envoyer un message via AIM à ouatmad Envoyer un message via MSN à ouatmad Envoyer un message via Yahoo à ouatmad
Citation:
Envoyé par luciedoudou Voir le message
Ok j'ai trouvé
update personne set mdp = md5('motdepasse');
ca a bien haché mais c'est le même code a toute les lignes
je trouve que c'est normal. Puisque
  • Primo tu as mal executé la requete update sur la colonne et de ce fait tous les elements de la colonne ont eu la meme valeur a savoir md5(motdepasse).
  • secundo en faisant la bonne requete, c'est normal que tu obtiennes le meme hash (puisque ce sont des valeurs identiques)
__________________
Les hommes naissent et demeurent libres et egaux en dignité et en droit. Les distinctions sociales ne peuvent etre fondées que sur l'utilité commune. Article 1 droits et de l'homme et du citoyen. 1789
ouatmad est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/02/2008, 15h27   #14
Membre à l'essai
 
Étudiant
Inscription : janvier 2007
Messages : 121
Détails du profil
Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : janvier 2007
Messages : 121
Points : 24
Points : 24
Ben du coup comment puis je faire pour que chaque mot de passe ai sa propre signature md5 faut il que je m'y prenne ligne par ligne?
luciedoudou est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/02/2008, 15h38   #15
Membre expérimenté
 
Inscription : août 2005
Messages : 515
Détails du profil
Informations forums :
Inscription : août 2005
Messages : 515
Points : 557
Points : 557
Est ce que vous m'écoutez?

Code :
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
mysql> create table m
    -> (
    -> m char(32) not null
    -> )
    -> ;
Query OK, 0 rows affected (0.00 sec)
 
mysql> insert into m values ('titi'), ('toto');
Query OK, 2 rows affected (0.00 sec)
Records: 2  Duplicates: 0  Warnings: 0
 
mysql> select * from m;
+------+
| m    |
+------+
| titi |
| toto |
+------+
2 rows in set (0.00 sec)
 
mysql> update m set m = md5(m);
Query OK, 2 rows affected (0.00 sec)
Rows matched: 2  Changed: 2  Warnings: 0
 
mysql> select * from m;
+----------------------------------+
| m                                |
+----------------------------------+
| 5d933eef19aee7da192608de61b6c23d |
| f71dbe52628a3f83a77ab494817525c6 |
+----------------------------------+
2 rows in set (0.00 sec)
DaRiaN est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/02/2008, 14h04   #16
Membre éprouvé
 
Homme
Développeur informatique
Inscription : janvier 2005
Messages : 349
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 50
Localisation : Belgique

Informations professionnelles :
Activité : Développeur informatique
Secteur : Conseil

Informations forums :
Inscription : janvier 2005
Messages : 349
Points : 439
Points : 439
Luciedoudou, tu devrais sans doute lire au minimum un tutoriel sur le SQL et c'est pas ça qui manque ici. Pcq ton problème est plus que trivial et la réponse t'a été donnée au moins 5 fois dans les posts précédents.
beeboo est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 03h18.


 
 
 
 
Partenaires

Hébergement Web