Problème MD5 - PHP - Programmation
Marsh Posté le 27-04-2005 à 12:07:46
Ta essayé un echo de ton mot de passe crypté pour vérifier qu'il était cohérent avec celui de la BD?
Marsh Posté le 27-04-2005 à 12:11:12
Au hasard, ton champ 'pass' fait quelle taille, dans la base?
Marsh Posté le 27-04-2005 à 12:14:37
cesarr89 a écrit : Ta essayé un echo de ton mot de passe crypté pour vérifier qu'il était cohérent avec celui de la BD? |
Oui j'ai déjà fait un echo sur le mot de passe du formulaire crypté et c'est bien coherent avec celui de la BD!
Marsh Posté le 27-04-2005 à 12:16:12
fais afficher ta requête à l'écran au lieu de l'exécuter, et exécute-la à la main, pour voir.
Marsh Posté le 27-04-2005 à 12:27:16
voici mon code, et je remercie de votre aide:
<?php include('connexion.php'); ?>
<?php
session_start();
if (isset($_POST['login'])){
$login = $_POST['login'];
$pass = $_POST['pass'];
mysql_select_db($database_dbprotect, $dbprotect);
$verif_query=sprintf("SELECT * FROM tb_membre WHERE login='%s' AND pass='%s'", addslashes($login), md5($pass));
$verif = mysql_query($verif_query, $dbprotect) or die(mysql_error());
$row_verif = mysql_fetch_assoc($verif);
$utilisateur = mysql_num_rows($verif);
if ($utilisateur) {
session_register("authentification" );
$_SESSION['login'] = $row_verif['login'];
$_SESSION['pass'] = $row_verif['pass'];
$_SESSION['nom'] = $row_verif['nom'];
header("Location:accueil.php" );
}
else {
header("Location:index.php?erreur=login" );
}
}
// Déconnexion
if(isset($_GET['erreur']) && $_GET['erreur'] == 'logout'){
$prenom = $_SESSION['nom'];
session_unset("authentification" );
header("Location:index.php?erreur=delog" );
}
?>
<html>
<head>
<title>Authentification</title>
<style type="text/css">
<!--
.Style2 {color: #0000FF}
.Style5 {color: #FF0000}
.Style6 {font-family: Verdana, Arial, Helvetica, sans-serif}
.Style7 {font-size: 12px}
-->
</style>
</head>
<body>
<form action="" method="post" name="connect" class="Style6">
<p align="center" class="Style7"><strong>- ACCES MEMBRE - </strong></p>
<p align="center" class="Style7"><em>Authentification</em></p>
<p align="center" class="Style7"><strong>
<?php if(isset($_GET['erreur']) && ($_GET['erreur'] == "login" )) { // Affiche l'erreur ?>
<span class="Style5">Echec d'authentification !!! > login ou mot de passe incorrect</span> <?php } ?>
<?php if(isset($_GET['erreur']) && ($_GET['erreur'] == "delog" )) { // Affiche l'erreur ?>
<span class="Style2">Déconnexion réussie... A bientôt !</span> <?php } ?>
<?php if(isset($_GET['erreur']) && ($_GET['erreur'] == "intru" )) { // Affiche l'erreur ?>
<span class="Style5">Echec d'authentification !!! > Aucune session n'est ouverte</span>
<span class="Style5">ou vous n'avez pas les droits pour afficher cette page </span>
<?php } ?>
</strong><em> </em></p>
<div align="center" class="Style7">
<table width="300" border="0" cellpadding="0" cellspacing="0">
<tr>
<td><table width="294" border="0" cellpadding="10" cellspacing="0" bgcolor="#eeeeee">
<tr>
<td width="50%"><span class="Style7">LOGIN</span></td>
<td width="50%"><div align="center">
<input name="login" type="text" id="login">
</div></td>
</tr>
<tr>
<td width="50%"><span class="Style7">MOT DE PASSE </span></td>
<td width="50%"><div align="center">
<input name="pass" type="password" id="pass">
</div></td>
</tr>
<tr>
<td height="34" colspan="2"><div align="center">
<input type="submit" name="Submit" value="Se connecter">
</div></td>
</tr>
</table></td>
</tr>
</table>
<p align="center"><a href="contruction.php"><strong>S'inscrire</strong></a></p>
</div>
</form>
</body>
</html>
Marsh Posté le 27-04-2005 à 12:32:06
ouarf......tu peux mettre la balise [C.O.D.E] pour afficher le code stp, parce que la c'est pas très lisible...
Marsh Posté le 27-04-2005 à 12:37:40
cesarr89 a écrit : ouarf......tu peux mettre la balise [C.O.D.E] pour afficher le code stp, parce que la c'est pas très lisible... |
<?php require_once('connexion.php'); ?>
<?php
session_start();
if (isset($_POST['login'])){
$login = $_POST['login'];
$pass = $_POST['pass'];
mysql_select_db($database_dbprotect, $dbprotect);
$verif_query=sprintf("SELECT * FROM tb_membre WHERE login='%s' AND pass='%s'", addslashes($login), md5($pass));
$verif = mysql_query($verif_query, $dbprotect) or die(mysql_error());
$row_verif = mysql_fetch_assoc($verif);
$utilisateur = mysql_num_rows($verif);
if ($utilisateur) {
session_register("authentification" );
$_SESSION['login'] = $row_verif['login'];
$_SESSION['pass'] = $row_verif['pass'];
$_SESSION['nom'] = $row_verif['nom'];
header("Location:accueil.php" );
}
else {
header("Location:index.php?erreur=login" );
}
}
// Déconnexion
if(isset($_GET['erreur']) && $_GET['erreur'] == 'logout'){
$prenom = $_SESSION['nom'];
session_unset("authentification" );
header("Location:index.php?erreur=delog" );
}
?>
<html>
<head>
<title>Authentification</title>
</style>
</head>
<body>
<form action="" method="post" name="connect" class="Style6">
<p align="center" class="Style7"><strong>- ACCES MEMBRE - </strong></p>
<p align="center" class="Style7"><em>Authentification</em></p>
<p align="center" class="Style7"><strong>
<?php if(isset($_GET['erreur']) && ($_GET['erreur'] == "login" )) { // Affiche l'erreur ?>
<span class="Style5">Echec d'authentification !!! > login ou mot de passe incorrect</span> <?php } ?>
<?php if(isset($_GET['erreur']) && ($_GET['erreur'] == "delog" )) { // Affiche l'erreur ?>
<span class="Style2">Déconnexion réussie... A bientôt !</span> <?php } ?>
<?php if(isset($_GET['erreur']) && ($_GET['erreur'] == "intru" )) { // Affiche l'erreur ?>
<span class="Style5">Echec d'authentification !!! > Aucune session n'est ouverte</span>
<span class="Style5">ou vous n'avez pas les droits pour afficher cette page </span>
<?php } ?>
</strong><em> </em></p>
<div align="center" class="Style7">
<table>
<tr>
<td><table>
<tr>
<td width="50%"><span >LOGIN</span></td>
<td width="50%"><div align="center">
<input name="login" type="text" id="login">
</div></td>
</tr>
<tr>
<td width="50%"><span class="Style7">MOT DE PASSE </span></td>
<td width="50%"><div align="center">
<input name="pass" type="password" id="pass">
</div></td>
</tr>
<tr>
<td height="34" colspan="2"><div align="center">
<input type="submit" name="Submit" value="Se connecter">
</div></td>
</tr>
</table></td>
</tr>
</table>
</div>
</form>
</body>
</html>
Marsh Posté le 27-04-2005 à 12:39:12
skeye a écrit : Au hasard, ton champ 'pass' fait quelle taille, dans la base? |
+1
des fois qu'il soit tronqué a cause du varchar trop petit pour lequel il aurait pu opter dans sa base.
Marsh Posté le 27-04-2005 à 12:40:27
Fait un echo de $verif_query et execute le resultat du echo pour voir ce que ca retourne
Marsh Posté le 27-04-2005 à 14:14:02
pmusa a écrit : +1 |
Mon champs "pass" est un varchar(20), alors que md5() retourne un nombre de 32 caracteres (hexa)
Est ce que ca pourrait etre ça!
Marsh Posté le 27-04-2005 à 14:14:43
rado_rmh a écrit : Mon champs "pass" est un varchar(20), alors que md5() retourne un nombre de 32 caracteres (hexa) |
ah ben oui ya des chances hein...
Marsh Posté le 27-04-2005 à 14:19:24
rado_rmh a écrit : Mon champs "pass" est un varchar(20), alors que md5() retourne un nombre de 32 caracteres (hexa) |
md5 renvoi toujours 32 caractere... donc dans ta base de donnée, faut pas un varchar(20) mais un char(32)
Marsh Posté le 27-04-2005 à 14:27:48
Yes! maintenant, ça marche!
En fait, c'etait bien le problème de taille de mon champs "pass".
Merci à tous (cesarr89, skeye) et bonne continuation!
Marsh Posté le 27-04-2005 à 14:41:57
mais bordel MD5 c'est pas du cryptage mais du hachage
Marsh Posté le 27-04-2005 à 14:43:08
jagstang a écrit : mais bordel MD5 c'est pas du cryptage mais du hachage |
Oui, mais ce n'est pas le sujet.
Marsh Posté le 27-04-2005 à 14:45:26
skeye a écrit : Oui, mais ce n'est pas le sujet.:o |
de plus, ce même problème avait déjà été résolu... merci d'utiliser la recherche...
http://forum.hardware.fr/forum2.ph [...] ash_post=0
edit : enfin, pas tout à fait le même, là il avait mis en varchar(15) et pas 20
Marsh Posté le 27-04-2005 à 14:47:06
jagstang a écrit : de plus, ce même problème avait déjà été résolu... merci d'utiliser la recherche... |
Euh oui, mais le titre avait rien à voir et était mal écrit. Donc taggle.
Marsh Posté le 27-04-2005 à 14:49:23
j'ai juste fait une recherche MD5 dans prog (titre)
c'est le 7ème qui sort. alors taggle toi-même
Marsh Posté le 27-04-2005 à 12:04:59
Bonjour,
J'ai un petit problème avec la fonction de cryptage md5, et si quelqu un pourrai m'aider.
le site que je veux créer utilise une bdd mysql, et je programme en php.
Sur la page d'accueil (authentification) , j' ai un formulaire qui contient login "$_POST['login]" et mot de passe "$_POST['pass]".
Le probleme c'est que quand j'utilise la fonction md5() pour crypté le mot de passe du formulaire, pour le comparer avec celui dans la base (qui est aussi crypté par md5()), ma requete:
SELECT * FROM utilisateurs WHERE login='$login' AND pass='$pass'
n'arrive pas à trouver la réponse, pourtant le mot de passe dans la base (crypté)
et celui récupéré à partir du formulaire (crypté) sont les même, donc je ne vois pas pourquoi?
j'ai déjà tester le programme avec un mot de passe en clair (sans utiliser le md5), ça fonctionne bien!
Merci d'avance!