Base de donnée mysql
Fermé
Locki
Messages postés
198
Date d'inscription
mardi 8 décembre 2009
Statut
Membre
Dernière intervention
2 juillet 2013
-
19 mai 2010 à 13:41
avion-f16 Messages postés 19125 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 23 mars 2023 - 19 mai 2010 à 17:44
avion-f16 Messages postés 19125 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 23 mars 2023 - 19 mai 2010 à 17:44
A voir également:
- Base de donnée mysql
- Formules excel de base - Guide
- Exemple base de données access à télécharger gratuit - Forum Access
- Périphérique système de base ✓ - Forum Pilotes (drivers)
- La base de données de sécurité du serveur n'a pas de compte d'ordinateur pour la relation ✓ - Forum Réseau
- Mysql download - Télécharger - Bases de données
13 réponses
bissdebrazza
Messages postés
2064
Date d'inscription
vendredi 29 juin 2007
Statut
Contributeur
Dernière intervention
7 décembre 2017
713
19 mai 2010 à 13:46
19 mai 2010 à 13:46
Salut!dis nous la variable $login est déclarée où?
Locki
Messages postés
198
Date d'inscription
mardi 8 décembre 2009
Statut
Membre
Dernière intervention
2 juillet 2013
13
19 mai 2010 à 14:00
19 mai 2010 à 14:00
en effet, je ne l'ai pas déclarée.
Pourrais-tu m'éclairer car je suis un peu débutant...
Pourrais-tu m'éclairer car je suis un peu débutant...
bissdebrazza
Messages postés
2064
Date d'inscription
vendredi 29 juin 2007
Statut
Contributeur
Dernière intervention
7 décembre 2017
713
19 mai 2010 à 14:20
19 mai 2010 à 14:20
ok!login correspond à quoi pour toi?
avion-f16
Messages postés
19125
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
23 mars 2023
4 468
19 mai 2010 à 14:21
19 mai 2010 à 14:21
Ton identification peut mal de fonctionner :
J'espère que ton serveur a l'option magic_quotes activée (ce qui est également déconseillé), sinon on peut te faire une injection SQL.
Je te déconseil l'utilisation de la fonction extract(). Imagine que tu aies une variable contenant une informations qui n'est pas censée dépendre de l'utilisateur et que le hackeur la modifie en créant un champ lui-même dans le formulaire (ce qui est possible, car le HTML est côté client, donc modifiable).
Essaye avec ce script.
// On va chercher le mot de passe afférent à ce login $sql = "SELECT nom_utilisateur FROM login WHERE nom_utilisateur = '$login'";
J'espère que ton serveur a l'option magic_quotes activée (ce qui est également déconseillé), sinon on peut te faire une injection SQL.
Je te déconseil l'utilisation de la fonction extract(). Imagine que tu aies une variable contenant une informations qui n'est pas censée dépendre de l'utilisateur et que le hackeur la modifie en créant un champ lui-même dans le formulaire (ce qui est possible, car le HTML est côté client, donc modifiable).
Essaye avec ce script.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Locki
Messages postés
198
Date d'inscription
mardi 8 décembre 2009
Statut
Membre
Dernière intervention
2 juillet 2013
13
19 mai 2010 à 14:41
19 mai 2010 à 14:41
bissdebrazza:au login de la personne? (enfaite je ne comprends pas la syntaxe de SELECT FROM WHERE)
avion-f16: ton script est plein de fautes...
avion-f16: ton script est plein de fautes...
avion-f16
Messages postés
19125
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
23 mars 2023
4 468
Modifié par avion-f16 le 19/05/2010 à 14:46
Modifié par avion-f16 le 19/05/2010 à 14:46
Tu pourrais m'en citer au moins une ?
En tout cas, pas au niveau syntaxique.
As-tu mis tes identifiants dans cette ligne ?
db_test : le nom de ta base de données
root : ton identifiant
les guillemets vides : ton mot de passe
Et remplace la ligne 16 par
En tout cas, pas au niveau syntaxique.
As-tu mis tes identifiants dans cette ligne ?
$pdo = new PDO('mysql:host=localhost;dbname=db_test','root','');localhost : ton hôte SQL
db_test : le nom de ta base de données
root : ton identifiant
les guillemets vides : ton mot de passe
Et remplace la ligne 16 par
if($password == $donnees->password) {
Locki
Messages postés
198
Date d'inscription
mardi 8 décembre 2009
Statut
Membre
Dernière intervention
2 juillet 2013
13
19 mai 2010 à 14:47
19 mai 2010 à 14:47
excuse-moi, la page a été traduite automatiquement ....
sinon j'ai une erreur:
Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[42000] [1049] Unknown database 'db_test'' in C:\xampp\htdocs\Formulaire_inscription\php\VerifLogin.php:6 Stack trace: #0 C:\xampp\htdocs\Formulaire_inscription\php\VerifLogin.php(6): PDO->__construct('mysql:host=loca...', 'root', '') #1 {main} thrown in C:\xampp\htdocs\Formulaire_inscription\php\VerifLogin.php on line 6
merci a toi
sinon j'ai une erreur:
Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[42000] [1049] Unknown database 'db_test'' in C:\xampp\htdocs\Formulaire_inscription\php\VerifLogin.php:6 Stack trace: #0 C:\xampp\htdocs\Formulaire_inscription\php\VerifLogin.php(6): PDO->__construct('mysql:host=loca...', 'root', '') #1 {main} thrown in C:\xampp\htdocs\Formulaire_inscription\php\VerifLogin.php on line 6
merci a toi
avion-f16
Messages postés
19125
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
23 mars 2023
4 468
19 mai 2010 à 14:49
19 mai 2010 à 14:49
J'ai modifié mon message précédent, j'y explique comment y mettre tes informations.
Locki
Messages postés
198
Date d'inscription
mardi 8 décembre 2009
Statut
Membre
Dernière intervention
2 juillet 2013
13
19 mai 2010 à 15:00
19 mai 2010 à 15:00
ca marche mais la vérification ne marche pas. Il me vient toujours "Nom d'utilisateur ou mot de passe incorrect. Veuillez réessayer."
Eastchild
Messages postés
318
Date d'inscription
lundi 23 juillet 2007
Statut
Membre
Dernière intervention
28 mars 2012
31
19 mai 2010 à 15:01
19 mai 2010 à 15:01
Bonjour,
Tu as oublié un point dans ta requête SQL.
le bon code :
Tu as oublié un point dans ta requête SQL.
le bon code :
$sql = "SELECT nom_utilisateur FROM login WHERE nom_utilisateur = '.$login;
avion-f16
Messages postés
19125
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
23 mars 2023
4 468
19 mai 2010 à 15:05
19 mai 2010 à 15:05
Essaye avec ça : http://paste.pocoo.org/show/215698/
Dis-moi ce que tu vois (et n'oublie pas de remettre tes informations à la ligne 7).
Dis-moi ce que tu vois (et n'oublie pas de remettre tes informations à la ligne 7).
Locki
Messages postés
198
Date d'inscription
mardi 8 décembre 2009
Statut
Membre
Dernière intervention
2 juillet 2013
13
19 mai 2010 à 15:25
19 mai 2010 à 15:25
Formulaire envoyé
Nom d'utilisateur ou mot de passe incorect. Veuillez réessayer.
Nom d'utilisateur ou mot de passe incorect. Veuillez réessayer.
Eastchild
Messages postés
318
Date d'inscription
lundi 23 juillet 2007
Statut
Membre
Dernière intervention
28 mars 2012
31
19 mai 2010 à 15:29
19 mai 2010 à 15:29
Si c'est bien ce que je pense, remplace ta variable $login par $_POST['nom_utilisateur']
avion-f16
Messages postés
19125
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
23 mars 2023
4 468
19 mai 2010 à 17:40
19 mai 2010 à 17:40
Regarde à la ligne 9 : $login est défini est contient $_POST['nom_utilisateur'] protégé contre les injections SQL.
Locki
Messages postés
198
Date d'inscription
mardi 8 décembre 2009
Statut
Membre
Dernière intervention
2 juillet 2013
13
19 mai 2010 à 15:31
19 mai 2010 à 15:31
je te met un screen de ma bdd:
http://img691.imageshack.us/img691/1776/20100519152729.png
http://img691.imageshack.us/img691/1776/20100519152729.png
Eastchild
Messages postés
318
Date d'inscription
lundi 23 juillet 2007
Statut
Membre
Dernière intervention
28 mars 2012
31
19 mai 2010 à 15:33
19 mai 2010 à 15:33
Tu veux bien récupéré les données de ta table login en comparant le nom d'utilisateur que l'on a posté avec ceux de la table ?
Locki
Messages postés
198
Date d'inscription
mardi 8 décembre 2009
Statut
Membre
Dernière intervention
2 juillet 2013
13
19 mai 2010 à 15:35
19 mai 2010 à 15:35
Peux tu mieux expliquer stp
Eastchild
Messages postés
318
Date d'inscription
lundi 23 juillet 2007
Statut
Membre
Dernière intervention
28 mars 2012
31
Modifié par Eastchild le 20/05/2010 à 07:53
Modifié par Eastchild le 20/05/2010 à 07:53
Lorsqu'un utilisateur arrive sur ton site, il a droit à un formulaire sur lequel il va pouvoir saisir son login et son mot de passe. Un fois qu'il a posté, tu récupères les données qu'il a envoyé pour les comparer avec les données de ta BDD. Pour cela, il faut que tu recupère à l'aide de $_POST ce qui a été posté.
Sur ton code, tu donnes les variables $login et $password qui ne sont pas définie donc elle ne valle rien. Il faut utiliser $_POST['nom_utilisateur'] et $_POST['password'].
Ce qui donne :
Sur ton code, tu donnes les variables $login et $password qui ne sont pas définie donc elle ne valle rien. Il faut utiliser $_POST['nom_utilisateur'] et $_POST['password'].
Ce qui donne :
<?php
// On démarre la session
session_start();
$loginOK = false;
// On n'effectue les traitement qu'à la condition que
// les informations aient été effectivement postées
if ( isset($_POST) && (!empty($_POST['nom_utilisateur'])) && (!empty($_POST['password'])) )
{
// On va chercher le mot de passe afférent à ce login
$sql = "SELECT * FROM login WHERE nom_utilisateur = '.$_POST['nom_utilisateur'];
$req = mysql_query($sql) or die('Erreur SQL : '.$sql);
// On vérifie que l'utilisateur existe bien
if (mysql_num_rows($req) > 0)
{
$data = mysql_fetch_assoc($req);
// On vérifie que son mot de passe est correct
if ($_POST['password'] == $data['password'])
{
$loginOK = true;
}
}
}
// Si le login a été validé on met les données en sessions
if ($loginOK)
{
$_SESSION['nom_utilisateur'] = $data['nom_utilisateur'];
$_SESSION['age'] = $data['age'];
$_SESSION['sexe'] = $data['sexe'];
$_SESSION['ville'] = $data['ville'];
}
else
{
echo 'Nom d\'utilisateur ou mot de passe incorect. Veuillez réessayer.';
}
?>
avion-f16
Messages postés
19125
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
23 mars 2023
4 468
19 mai 2010 à 17:44
19 mai 2010 à 17:44
En fait, en protégeant $login pour les injections SQL, les guillemets se mettent déjà autour de la chaine.
Donc la ligne
Donc la ligne
$sql = 'SELECT 'password' FROM 'login' WHERE 'nom_utilisateur' = "'.$login.'"';devient
$sql = 'SELECT 'password' FROM 'login' WHERE 'nom_utilisateur' = '.$login;Cette fois, je pense que c'est la bonne :)