Bonjour,
voici mon problème : j'ai une page auth.php avec un login et un mot de passe. Ce script (ci-dessous) vérifie si l'utilisateur est bien dans la BD (je sais niveau sécurité, c pas top, mais ça n'est pas le problème pour l'instant), et, s'il y est je le redirige vers une autre page. Pour cela j'utilise la fonction verification (décrite tout en bas). Mon problème, j'ai le message d'erreur suivant et je ne vois absolument pas pourquoi, car quand j'affiche la requête, elle est ok, je récupére bien le nom et le mot de passe en $_post :
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result
resource in C:\wamp\www\documentation\fonctions.php on line 16
Merci de votre aide.
Script auth.php
include ('connex.php');
include ('fonctions.php');
session_start();
if ((isset($_POST['id'])) && (isset($_POST['pass'])))
{
$nom=$_POST['id'];
$mdp=$_POST['pass'];
//echo $nom;
//on teste s'ils sont valides
if (verification($nom,$mdp))
{
//mot de passe valide, on change l'id de la session
//et on sauvegarde le nom puis direction la page index.php
session_regenerate_id();
$_SESSION['nom']=$nom;
header('location:index.php?nom='.$nom);
exit;
}
//sinon on averti et redirige l utilisateur
else
{
$message="Vous avez saisi le mauvais nom utilisateur et/ou mot de passe.
<br>Essayez à nouveau ou contactez le service informatique.<br /<br />";
$message .="<a href='auth.htm'>Retour</a>";
}
}
else
{
echo '<head>
<link rel="shortcut icon" href="favicon.ico">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Documentation.net</title>
<link rel="stylesheet" href="style.css" type="text/css" />
</head>
<body>
<table id="corps" align="center">
<tr><td height="125" id="titre"><img src="titre.jpg" width="454" height="53"></td>
</tr>
<tr><td height="62"> </td>
</tr>
<tr><td height="173">
<table align="center" width="40%" id="ident">
<form name="auth" action="auth.php" method="post">
<tr><td height="41" colspan="2" align="center"><strong> Authentification</strong></td>
</tr>
<tr><td height="36">Utilisateur</td>
<td><input type="text" name="id"></td></tr>
<tr><td height="49">Mot de passe</td>
<td> <input type="password" name="pass"></td></tr>
<tr><td height="37" colspan="2" align="center"><input type="submit" value="Entrer"></td></tr>
</form>
</table>
</td></tr>
<tr><td height="150"> </td>
</tr>
<tr><td id="pied">Documentation.net - Développé par le service Informatique et Télécommunications - Novembre 2006</td></tr>
</table>
</body>
</html>';
}
?>
Fonction verification :
function verification($nom,$pass)
{
$nom_sql=mysql_real_escape_string($nom);
$passe_sql=mysql_real_escape_string($pass);
$sql="SELECT * FROM membre WHERE nom_prnm='".$nom_sql."' AND passe='".$passe_sql."'";
//echo $sql;
$res=mysql_query($sql);
//$nbenr = mysql_result($res);
if(mysql_num_rows($res)>0)
{
return TRUE;
}
else
{
return FALSE;
}
}
Merci à ceux qui répondrons.
Didine