Php Mysql identification base de donnée. [Résolu/Fermé]

Signaler
Messages postés
63
Date d'inscription
dimanche 29 mai 2011
Statut
Membre
Dernière intervention
13 avril 2014
-
Messages postés
63
Date d'inscription
dimanche 29 mai 2011
Statut
Membre
Dernière intervention
13 avril 2014
-
Bonjour,
J'ai rédigé le code suivant :
<?php
include("bddconnect.php");
mysql_select_db($database) or die("erreur de connexion a la base de donnees");
$query='SELECT * FROM identifiant';
$ok=mysql_query($query);
$row=mysql_fetch_row($ok) or die (mysql_error());
if($_POST['username']!=$row[1] or $_POST['password']!=$row[2])
{
echo "Echec de la connexion";
}
else
{
echo "Connexion reussi";
}

mysql_close();
?>

Il fonctionne mais seulement pour le premier identifiant de la base de donnée.....(il n'y en a que 2)
Aucune erreur ne s'affiche.
(Et aussi pouvez me dire si ce code est protégé contre les injections sql ? J'en ai testé et apparament ça semble bon.)
Merci de vos future réponse.

4 réponses

Messages postés
1458
Date d'inscription
mercredi 31 août 2011
Statut
Membre
Dernière intervention
18 août 2020
122
Salut,

Peux-tu m'expliquer comment tu as fait pour tester une injection sql alors qu'il n'y a pas de variable appeler dans la requête ?

Le seul moyen d'exploiter une faille serai qu'il y ai déjà du code dans la BDD.
Messages postés
63
Date d'inscription
dimanche 29 mai 2011
Statut
Membre
Dernière intervention
13 avril 2014
3
Merci de ta réponse.

Il y a déjà du code dans la base de donné (enfin je crois). Je l'insère directement avec le phpmyadmin de wamp.(mais c'est peut etre pas ça dont tu parles...)

En tout cas la base de donné database contien une table identifiant de 3 colonne id username et password qui ont des valeurs : par exemple le premier c'est id=1 username=lalala password=lilili.

Mais sinon t'as une explication pour le premier problème ?.
Messages postés
699
Date d'inscription
mercredi 8 avril 2009
Statut
Membre
Dernière intervention
4 décembre 2016
80
Alors le problème est tres simple

'SELECT * FROM identifiant'; 

cette requete recupere tous tes identifiant dans la base

$row=mysql_fetch_row($ok) or die (mysql_error()); 

mais cette ligne ne recupere que le premier enregistrement

ce que tu dois faire, c'est faire un select sur le username
$query="SELECT password FROM identifiant WHERE username = '".$_POST['username']."'"; 

pour info, cete requete n'est pas protégé

ensuite tu peux tester comme ceci :

$ok=mysql_query($query); 
$row=mysql_fetch_row($ok) or die (mysql_error());
if($_POST['password']!=$row['password'])
{
echo "Echec de la connexion";
}
else
{
echo "Connexion reussi";
} 


maintenant si tu veux protéger les données , je te conseille d'utiliser des requete préparée avec pdo

https://www.php.net/manual/fr/book.pdo.php
Messages postés
63
Date d'inscription
dimanche 29 mai 2011
Statut
Membre
Dernière intervention
13 avril 2014
3
Merci a vous deux !