Requete SQL
Résolu
Exileur
Messages postés
1621
Date d'inscription
Statut
Membre
Dernière intervention
-
Exileur Messages postés 1621 Date d'inscription Statut Membre Dernière intervention -
Exileur Messages postés 1621 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
- Requête sql pour afficher uniquement les fleurs dont le prix est strictement inférieur à 10 euros ✓ - Forum DS
- Sql (+) - Forum Programmation
- Jointure sql ✓ - Forum MySQL
- Quelle requête écrire pour demander au moteur de recherche de présenter de préférence les pages web traitant de tennis mais pas de tennis de table ✓ - Forum Android
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