Identification : verif email mdp php

Fermé
Julien - 28 mars 2011 à 10:45
Gremy87 Messages postés 352 Date d'inscription mercredi 19 mai 2010 Statut Membre Dernière intervention 19 mars 2014 - 28 mars 2011 à 17:15
Bonjour,
Je débute en php et j'essaye de faire un espace membre la je galere un peu...
J'ai l'erreur Notice: Undefined variable: nbmail je comprend pas pourquoi en fait je doit me tromper sur ca $nbmail=mysql_num_rows($resmdp); il doit y avoir un truc que je ne connais pas. Puis il doit y avoir d'autre erreur mais pour l'instant j'ai que celle-ci!
Merci d'avance pour votre aide et bonne journée!



<?php
include ('../php/connexbdd.php');
if(isset($_POST['mail']) && !empty($_POST['mail']) && !empty($_POST['mdp']))
{
$reqmdp="SELECT mdp
FROM membres
WHERE membres.mail='".$_POST['mail']."'";
$resmdp=mysql_query($reqmdp) or die(mysql_error());
$nbmail=mysql_num_rows($resmdp);
$ligmdp=mysql_fetch_array($resmdp);

}
if($nbmail==0)
{?>
<body onLoad="javascript:alert('L'adresse mail n'existe pas!');">
<?php
}
else if($_POST['mdp']==$ligmdp[0])
{
$_SESSION['motdepasse']=$_POST['mdp'];
$_SESSION['email']=$_POST['mail'];

}
else
{
?>
<body onLoad="javascript:alert('Le mot de passe erroné!');">
<?php
header("Location: ../html/info_membre.php");
mysql_close($connex);
}

?>



5 réponses

Gremy87 Messages postés 352 Date d'inscription mercredi 19 mai 2010 Statut Membre Dernière intervention 19 mars 2014 38
28 mars 2011 à 10:55
Bonjour,

tout d'abors lorsque tu as une erreur près d'une requete, le reflexe à avoir est d'afficher la requete et la tester dans ton gestionnaire de base de données (phpmyadmin par exemple). tu veras si ta requete est bien écrite, si elle te renvoi des lignes ou non et tu partira donc sur des bases saines.


si tout est bon coté requete, c'est surement quetu ne passe pas dans ton premier "if" donc il ne te fais pas la requete et surtout il ne crée pas ta variable $nbmail mais passe a la suite et la tu lui demande "if($nbmail==0)"

sauf que a ce moment la il ne connait pas $nbmail parce qu'il n'est pas passé dans le 1er if

voila regarde de ce coté la ^^

bonne journée
0
J'avais effectivement une errreur dans la requête maisj'ai omis un truc.. j'en viens a me poser une autre question le code php est dans la même page que mon formulaire soit connec.php mon formulaire est le suivant, ma question est le php va s'exécuter même si je n'appuie pas sur submit et du coup vu que je n'aurais pas rempli le formulaire ca va planter a chaque fois ? :


<form onsubmit="return(VerifForm(this))" action="../html/connec.php" method="post" enctype="application/x-www-form-urlencoded" name="connexion">
<table>
<tr>
<td>
<input name="mail" type="text" size="15" value="mail" ""onFocus="if(this.value=='Email')this.value='<?php if (isset($_POST['mail'])) echo htmlentities(trim($_POST['mail'])); ?>'" onBlur="javascript:if(this.value=='')this.value='Email';}">
</td>

<td>
<input name="mdp" type="text" size="15" value="Mot de passe" onFocus="javascript:if(this.value=='Mot de passe'){this.type='password'; this.value='<?php if (isset($_POST['mdp'])) echo htmlentities(trim($_POST['mdp'])); ?>';}" onBlur="javascript:if(this.value==''){this.type='text'; this.value='Mot de passe';}"
</td>
<td>
<input name="connexion" value="connexion" type="image" src='../Images/menu/bouton-ok.png' align="bottom" />
</td>
<td>
<a href="inscritption.php">S'inscrire</a>
</td>
</tr>
</table>
</form>
0
Gremy87 Messages postés 352 Date d'inscription mercredi 19 mai 2010 Statut Membre Dernière intervention 19 mars 2014 38
28 mars 2011 à 11:23
Ah oui effectivement ca va poser probleme si autour de ton code php tu ne vérifie pas que le formulaire a été précedement remplie avec un simple

if (isset($_POST['mail']) && isset($_POST['mdp']))
{
//tout le code de traitement de ton formulaire
}

le 1er probleme est résolu? il me semble que si un des champs n'est pas remplis tu as toujours ton erreur sur le $nbmail vu qu'il ne crée pas la variable.
0
Bon alors ça marche plus ou moins. Si l'adresse est bonne mais pas le mdp ca m'affiche bien l'alerte mais si l'adresse n'existe pas ca ne m'affiche pas l'erreur par contre
0
J'ai compris pourquoi ca marchais pas pour le mdp il est cripter en md5 dans la basedu coup comment je fais pour le comparer au mdp qui est dans ma variable ?
0
Gremy87 Messages postés 352 Date d'inscription mercredi 19 mai 2010 Statut Membre Dernière intervention 19 mars 2014 38
Modifié par Gremy87 le 28/03/2011 à 14:52
Pour une question de sécurité on ne "dé-hash" jamais un mot de passe. tu hash en md5 celui entré et tu le compare a celui de ta BDD ;)


edit: tu pourrais poster de nouveau ton code corrigé stp si tu as toujours des soucis que je vois ce que ca donne avec les modifs ;)


RISE OF THE GEEK IS COMMING SOON!!! BWAHAHAHAHA
0
J'en suis la par contre chose bizarre le mot de passe quand je met le bon ca correspond jamais.


if (isset($_POST['mail']) && isset($_POST['mdp']))
{
$reqmdp="SELECT mdp
FROM membres
WHERE membres.mail='".$_POST['mail']."'";
mysql_error();
$resmdp=mysql_query($reqmdp) or die(mysql_error());
$nbmail=mysql_num_rows($resmdp);
$ligmdp=mysql_fetch_array($resmdp);

echo $ligmdp[0];
echo "=";
echo $pass;

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

if($nbmail==0)
{?>
<body onLoad="javascript:alert('L'adresse mail n'existe pas!');">
<?php
}
else if($pass==$ligmdp[0])
{
$_SESSION['motdepasse']=$_POST['mdp'];
$_SESSION['email']=$_POST['mail'];
//$_SESSION['nom']=
//$_SESSION['prenom']=

//header("Location: ../html/info_membre.php");
}
else
{
?>
<body onLoad="javascript:alert('Le mot de passe erroné!');">
<?php

mysql_close($connex);
}
}
?>
0
$pass = md5($_POST['mdp']); je l'ai mis avant les echo
0
Gremy87 Messages postés 352 Date d'inscription mercredi 19 mai 2010 Statut Membre Dernière intervention 19 mars 2014 38
28 mars 2011 à 15:10
ok, alors voyons voir.

ton $pass crypté ne correspond jamais a ton $ligmdp[0]?

c'est pas normal, vérifie la valeur qui est en bdd.

ensuite mettre le mot de passe en clair en variable de session d'une part ca ne va pas te servir a grand chose et niveau sécurité c'est bof bof.

sinon le reste m'as l air correct.

il te reste des soucis a part cette histoire de mdp qui correspond pas?
0
C'est bizarre le mdp j'ai essayé de le mettre en clair dans la base ca marche en crypté il a un problème par exemple si je met "q" comme mdp le echo renvoi 7694f4a66316e53=7694f4a66316e53c8cdd9d9954bd611d ca commence pareil mais le mdp récupéré dans la base renvoi des caractères en plus! J'ai vu une fonction mysql_escape_string ou unescaped_string mais il n'y a pas de caractere spéciaux donc je sais pas trop. Aprés tout le reste est bon.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Gremy87 Messages postés 352 Date d'inscription mercredi 19 mai 2010 Statut Membre Dernière intervention 19 mars 2014 38
28 mars 2011 à 15:31
ne cherche plus ^^

erreur simple mais que l'on oublie souvent de vérifier...

vérifie la longueur de ton champ BDD tu dois avoir un varchar(15) sauf qu un mdp hashé en md5 ca fait un peu plus de 15 caractères donc il tronque le tout et te dis rien ^^ mais tu perd la moitié du mdp!

halalala les joies de la programmation ;)
0
Bon beh c'est exactement ca lol. Bon tout marche maintenant. je vous remercie beaucoup pour le temps que vous avez passé a m'aider.
Bonne fin de journée!
0
Pour n'avoir aucun probleme il vaut mieux mettre la taille a combien ?
0
Gremy87 Messages postés 352 Date d'inscription mercredi 19 mai 2010 Statut Membre Dernière intervention 19 mars 2014 38
Modifié par Gremy87 le 28/03/2011 à 15:59
ca m'est arrivé assez souvent pour savoir d'ou ca vient lol. met 256 et tu n'aura aucun soucis

et de rien, pas de soucis ;)

n'oublies pas de mettre "résolu", bonne journée
0
J'arrive pas a le marqué résolu... Si un modo passe
0
Gremy87 Messages postés 352 Date d'inscription mercredi 19 mai 2010 Statut Membre Dernière intervention 19 mars 2014 38
28 mars 2011 à 17:15
t as un bouton en bas normalement je crois
0