Page 1 sur 1
Pb mysql_num_rows lors d'une authentification
Posté : 31 août 2012, 18:42
par biddal
Bonjour,
Voilà j'ai un souci sur ma page lors d'un test pour une authentification.
Voici mon code:
<?php
if(isset($_POST['login']) && isset($_POST['password']))
{
$login=$_POST['login'];
$password=$_POST['password'];
if(verification($password, $login) === true)
{
echo 'ok';
$_SESSION['login']= $nom_sql;
header ('location:./accueil.php');
}
else
{
$message="Mauvais mot de passe";
}
}
////////////////////////////////////////////////////////////////////////
function verification($password, $login)
{
include ("admin/connectbase.php");
//echo "$login $password";
$nom_sql=$login;
$passe_sql=md5($password);
echo "$nom_sql $passe_sql";
$query = "select * from users where login='$nom_sql' AND mdp='$passe_sql'";
$result = mysql_query($query) or mysql_error();
if(mysql_num_rows($result)>0)
{
return true;
}
else
{
return false;
}
}
?>
L'erreur que j'ai est:
Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given in C:\...\Desktop\intra_CTDR\admin\veriflog.php on line 27
Pourriez vous m'aider s'il vous plait ?
Merci d'avance!
Re: Pb mysql_num_rows lors d'une authentification
Posté : 31 août 2012, 23:48
par moogli
salut,
$result est un bool, soit requete foireuse, plutôt le résultat du ou logique entre mysql_query et mysql_error
Corrige ton code ainsi ça devrait aller mieux
<?php
function verification($password, $login)
{
include ("admin/connectbase.php");
//echo "$login $password";
$nom_sql=$login;
$passe_sql=md5($password);
echo "$nom_sql $passe_sql";
$query = "select * from users where login='$nom_sql' AND mdp='$passe_sql'";
$result = mysql_query($query);
if ($result === false)
echo 'Erreur sql '.mysql_error();
else
if(mysql_num_rows($result)>0)
{
return true;
}
else
{
return false;
}
?>
@+
Re: Pb mysql_num_rows lors d'une authentification
Posté : 01 sept. 2012, 08:29
par biddal
Bonjour,
Merci pour ta réponse. Ca a avancé un peu cependant ma variable $result me renvoie un truc bizarre :
Resource id #6
Celle ci ne devrait pas me renvoyer le nombre de ligne trouver avec ce login et ce mot de passe normalement ?
Merci d'avance. Bonne journée.
Re: Pb mysql_num_rows lors d'une authentification
Posté : 01 sept. 2012, 11:11
par moogli
non
$result est bie une ressource mysql, le résultat de mysql_num_rows($result) donne le nombre de tuples retourné
@+
Re: Pb mysql_num_rows lors d'une authentification
Posté : 01 sept. 2012, 17:46
par biddal
$result me renvoie Resource id #6 donc je ne rentre pas dans la boucle if ci dessous car $result ne me renvoie pas false ou true !!
if($result === false)
{
echo 'Erreur sql '.mysql_error();
}
else
{
//echo $result;
if(mysql_num_rows($result)>0)
{
return true;
}
else
{
return false;
}
Mon code ne s'exécute pas entièrement mais je n'ai pas de message d'erreur!!
Merci d'avance
Re: [RESOLU] Pb mysql_num_rows lors d'une authentification
Posté : 02 sept. 2012, 20:59
par biddal
Voilà pb résolu merci beaucoup à toi Moogli! Le souci que j'avais en fait est tout con c est que lorsque j'enregistre un mdp il se fait en md5 et ce champ du mdp je l'avais mis en varchar 30 carac alors qu'il en faisait 33 lorsqu'il le transformait avec le md5 donc lorsque j’essayais de me connecter bien ça marcher pas évidement vu qu les 2 mdp étaient différents du coup lol
Re: [RESOLU] Pb mysql_num_rows lors d'une authentification
Posté : 02 sept. 2012, 22:37
par AB
Ton code n'est pas protégé des injections sql. Tu dois utiliser
mysq_real_escape_string pour protéger tes variables dans les requêtes.
Et pendant que tu y es, tu ne devrais plus utiliser l'extension
mysql qui est en cours de dépréciation mais plutôt
mysqli en mode procédural si veux avoir une syntaxe presque identique à celle de mysql (donc cela demande très peu de travail pour passer de mysql à mysqli) ou sinon
PDO.
Re: [RESOLU] Pb mysql_num_rows lors d'une authentification
Posté : 03 sept. 2012, 07:05
par biddal
Je t'avoue que tu m'as un peu perdu AB lol! J'ai fait du php il y a plus de 5 ans et là je reprend un peu. Pourrais tu m'expliquer le mysqli stp?! Je suis censé marquer mysqli à chaque fois à la place de mysql maintenant? Et pour en revenir à mysq_real_escape_string pourrais tu m'expliquer également en quoi ça consiste exactement stp? E me donner un exemple concret dans mon code afin de bien cerner son utilisation?
Merci beaucoup pour ces renseignements
Bonne journée.
Re: [RESOLU] Pb mysql_num_rows lors d'une authentification
Posté : 03 sept. 2012, 09:44
par AB
mysqli c'est presque pareil que mysql, excepté qu'il y a plus de fonctionnalités (possibilité de requêtes préparées par exemple) et qu'il faut passer l'identifiant de connexion plus souvent dans les fonctions, comme par exemple
mysqli_real_escape_string. Regardes dans les liens que je t'ai donnés, c'est bien expliqué. Mais à part l'identifiant de connexion qui est obligatoire plus souvent, le reste est identique. Comme tu peux le lire mysql est déconseillé pour les nouveaux projets.