Requete SQL
Résolu
Exileur
Messages postés
1475
Date d'inscription
Statut
Membre
Dernière intervention
-
Exileur Messages postés 1475 Date d'inscription Statut Membre Dernière intervention -
Exileur Messages postés 1475 Date d'inscription Statut Membre Dernière intervention -
Bonjour à tous,
Alors voila, je suis en train d'essayer de creer un formulaire de connexion sur un espace membre, mais lorsque je rentre un nom d'utilisateur erroné dans le formulaire user, j'obtiens l'erreur suivante:
Warning: mysql_fetch_array() expects parameter 1 to be resource
:/
Voila le code que j'ai :
if(isset($_POST['username'], $_POST['password'])){
if(get_magic_quotes_gpc()) {
$ousername = stripslashes($_POST['username']);
$username=mysql_real_escape_string(stripslashes($_POST['username']));
$password = stripslashes($_POST['password']);}
else{
$username = mysql_real_escape_string($_POST['username']);
$password = $_POST['password'];}
$req = mysql_query('select password,id from users where username="'.$username.'"');
$dn = mysql_fetch_array($req); <-----------------------------
if($dn['password']== $password and mysql_num_rows($req)>0){
//On crée la session }
else{
$form = true;
$message = 'La combinaison que vous avez entré n\'est pas bonne.';
}
}
Je pense que c'est parce que $req est null et que du coup on peut pas rentrer une valeur null dans un tableau (?)
Merci pour votre aide
Cordialement
Exileur
N'oubliez pas de marquez votre post comme résolut lorsque vous avez eu les réponses à vos questions...
Au royaume des aveugles, les borgnes sont rois.
Alors voila, je suis en train d'essayer de creer un formulaire de connexion sur un espace membre, mais lorsque je rentre un nom d'utilisateur erroné dans le formulaire user, j'obtiens l'erreur suivante:
Warning: mysql_fetch_array() expects parameter 1 to be resource
:/
Voila le code que j'ai :
if(isset($_POST['username'], $_POST['password'])){
if(get_magic_quotes_gpc()) {
$ousername = stripslashes($_POST['username']);
$username=mysql_real_escape_string(stripslashes($_POST['username']));
$password = stripslashes($_POST['password']);}
else{
$username = mysql_real_escape_string($_POST['username']);
$password = $_POST['password'];}
$req = mysql_query('select password,id from users where username="'.$username.'"');
$dn = mysql_fetch_array($req); <-----------------------------
if($dn['password']== $password and mysql_num_rows($req)>0){
//On crée la session }
else{
$form = true;
$message = 'La combinaison que vous avez entré n\'est pas bonne.';
}
}
Je pense que c'est parce que $req est null et que du coup on peut pas rentrer une valeur null dans un tableau (?)
Merci pour votre aide
Cordialement
Exileur
N'oubliez pas de marquez votre post comme résolut lorsque vous avez eu les réponses à vos questions...
Au royaume des aveugles, les borgnes sont rois.
A voir également:
- Requete SQL
- Logiciel sql - Télécharger - Bases de données
- Sql lister les tables ✓ - Forum Programmation
- Requête bloquée par le pare-feu applicatif claranet webfence ✓ - Forum Réseaux sociaux
- Jointure sql ✓ - Forum MySQL
- Erreur lors de l'envoi de la requête facebook - Forum Facebook
2 réponses
Bonjour
Si tu as ce message, c'est qu'il y a une erreur dans l'exécution de ta requête. Pour avoir un message un peu plus explicite, essaye :
$req = mysql_query('select password,id from users where username="'.$username.'"') or die(mysql_error());
Au passage, tu ferais mieux de mettre le nom ET le mot de passe, dans ton WHERE, ça t'éviterait d'avoir à tester le mot de passe séparément
$req = mysql_query('select id from users where username="'.$username.'" AND password="'.$password.'"') or die(mysql_error());
Toujours au passage, c'est une très bonne habitude d'utiliser mysql_real_escape_string sur toutes les données qui viennent de l'extérieur. Pourquoi ne le faire qu'à moitié et ne se pas protéger du mot de passe ?
Si tu as ce message, c'est qu'il y a une erreur dans l'exécution de ta requête. Pour avoir un message un peu plus explicite, essaye :
$req = mysql_query('select password,id from users where username="'.$username.'"') or die(mysql_error());
Au passage, tu ferais mieux de mettre le nom ET le mot de passe, dans ton WHERE, ça t'éviterait d'avoir à tester le mot de passe séparément
$req = mysql_query('select id from users where username="'.$username.'" AND password="'.$password.'"') or die(mysql_error());
Toujours au passage, c'est une très bonne habitude d'utiliser mysql_real_escape_string sur toutes les données qui viennent de l'extérieur. Pourquoi ne le faire qu'à moitié et ne se pas protéger du mot de passe ?
J'ai suivis tes instructions, et l'erreur retourner est "no database selected"...
Je vais me pendre...
Effectivement, j'ai oublier d'insérer la commande mysql_select_db dans mon fichier de config.
Magique, en sélectionnant ma DB, tout fonctionne parfaitement =D
Merci pour tes observations, je vais échappé ma variable password, ça serai bête d'avoir une faille xss aussi simple --'
Et faire la vérification login/pass en une seule fois.
Cordialement
Exileur