Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 11 sur 11
  1. #1
    Inactif
    Inscrit en
    octobre 2008
    Messages
    826
    Détails du profil
    Informations forums :
    Inscription : octobre 2008
    Messages : 826
    Points : 128
    Points
    128

    Par défaut requete SQL qui bug

    Bonjours,

    Je rencontre une nouvelle erreur.

    Voici le code :
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
     
    public function login($pseudo, $password) {
    echo $pseudo . '<br />';
    echo $password;
    $dbh = mysql::getInstance();
    $sql = "SELECT count(*) AS nombreUser
    FROM account
    WHERE playername = '".$pseudo."'
    AND password = '".$password."'";
    $requete = $dbh->prepare($sql);
    $requete->execute();
    $nombreUser = $requete->fetch(PDO::FETCH_ASSOC);
     
    if (empty($pseudo) && empty($password) || !isset($pseudo) && !isset($password)) {
    echo "Erreur : Toutes les donnés ne sont pas fournis !";
    return FALSE;
    }
    else {
    if ($nombreUser['nombreUser'] < 1) {
    echo "Erreur : Compte innexistant !";
    return FALSE;
    }
    if ($nombreUser['nombreUser'] > 0) {
    echo "Felicitation : Connecter avec succes !";
    $this->retour = TRUE;
     
    $_SESSION['user']['pseudo'] = $prenom;
    $_SESSION['user']['password'] = $password;
    return TRUE;
    }
    }
    }
    Sa me met met que le compte inexistant alors qu'il existe dans la BDD

    Merci

    PS : ne clôturer pas le topic il est important.

    Merci

  2. #2
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro Andry Aimé
    Inscrit en
    septembre 2007
    Messages
    7 089
    Détails du profil
    Informations personnelles :
    Nom : Homme Andry Aimé
    Localisation : Ile Maurice

    Informations forums :
    Inscription : septembre 2007
    Messages : 7 089
    Points : 11 121
    Points
    11 121

    Par défaut

    Bonjour,

    1- Tu utilise PDO prepare or que tu mets directement les valeurs dans la requête. C'est pas bon, regarde un exemple sur le manuel php.

    2- C'est après que tu as exécuté la requête que tu as testé si les données existent ou non.

    A+.

  3. #3
    Inactif
    Inscrit en
    octobre 2008
    Messages
    826
    Détails du profil
    Informations forums :
    Inscription : octobre 2008
    Messages : 826
    Points : 128
    Points
    128

    Par défaut

    Et bien vs script fonctionne très bien sur mon autre script.

    Essaye ma fonction et si tu trouve la solution ce sera un miracle.

  4. #4
    Inactif
    Inscrit en
    octobre 2008
    Messages
    826
    Détails du profil
    Informations forums :
    Inscription : octobre 2008
    Messages : 826
    Points : 128
    Points
    128

    Par défaut

    J'ai trouvé une erreur j'ai oublié le s a account (table).

    Mais sa marche pas quand meme.

  5. #5
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro Andry Aimé
    Inscrit en
    septembre 2007
    Messages
    7 089
    Détails du profil
    Informations personnelles :
    Nom : Homme Andry Aimé
    Localisation : Ile Maurice

    Informations forums :
    Inscription : septembre 2007
    Messages : 7 089
    Points : 11 121
    Points
    11 121

    Par défaut

    1- Tu ne dois pas mettre en dur les valeurs dans la requête mais les mettre en paramètre de la fonction execute.
    2- Tu as testés l’existence de variable "(empty($pseudo) && empty($password)" après avoir exécuté la requête, or que tu devrais le faire avant la requête.

    A+.

  6. #6
    Inactif
    Inscrit en
    octobre 2008
    Messages
    826
    Détails du profil
    Informations forums :
    Inscription : octobre 2008
    Messages : 826
    Points : 128
    Points
    128

    Par défaut

    Oui j'ai testé ces valeurs.

    Sa retourne ce qu'il faut.

  7. #7
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro Andry Aimé
    Inscrit en
    septembre 2007
    Messages
    7 089
    Détails du profil
    Informations personnelles :
    Nom : Homme Andry Aimé
    Localisation : Ile Maurice

    Informations forums :
    Inscription : septembre 2007
    Messages : 7 089
    Points : 11 121
    Points
    11 121

    Par défaut

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
     
    public function login($pseudo, $password) {
    echo $pseudo . '<br />';
    echo $password;
    $dbh = mysql::getInstance();
    $sql = "SELECT count(*) AS nombreUser
    FROM account
    WHERE playername = '".$pseudo."'  // Tu ne dois pas mettre ces valeurs directement dans la requête
    AND password = '".$password."'";
    $requete = $dbh->prepare($sql); 
    $requete->execute(); // Tu dois mettre en paramètre de cette fonction les valeurs que tu as mis dans $sql
    $nombreUser = $requete->fetch(PDO::FETCH_ASSOC);
     
    if (empty($pseudo) && empty($password) || !isset($pseudo) && !isset($password)) {  // C'est avant de lancer la requête que tu dois tester ça
    echo "Erreur : Toutes les donnés ne sont pas fournis !";
    return FALSE;
    }
    else {
    if ($nombreUser['nombreUser'] < 1) {
    echo "Erreur : Compte innexistant !";
    return FALSE;
    }
    if ($nombreUser['nombreUser'] > 0) {
    echo "Felicitation : Connecter avec succes !";
    $this->retour = TRUE;
     
    $_SESSION['user']['pseudo'] = $prenom;
    $_SESSION['user']['password'] = $password;
    return TRUE;
    }
    }
    }

  8. #8
    Modérateur
    Avatar de rawsrc
    Homme Profil pro Martin
    Dev indep
    Inscrit en
    mars 2004
    Messages
    3 391
    Détails du profil
    Informations personnelles :
    Nom : Homme Martin
    Âge : 38
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : mars 2004
    Messages : 3 391
    Points : 7 732
    Points
    7 732

    Par défaut

    A savoir que empty() englobe isset().
    C'est un pléonasme que d'utiliser les deux simultanément.
    # Dans la Création, tout est permis mais tout n'est pas utile...

  9. #9
    Inactif
    Inscrit en
    octobre 2008
    Messages
    826
    Détails du profil
    Informations forums :
    Inscription : octobre 2008
    Messages : 826
    Points : 128
    Points
    128

    Par défaut

    S'il vous plait aider moi.

    Voici le sql :
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
     
    -- phpMyAdmin SQL Dump
    -- version 3.3.9
    -- http://www.phpmyadmin.net
    --
    -- Serveur: localhost
    -- Généré le : Ven 05 Octobre 2012 à 14:03
    -- Version du serveur: 5.5.8
    -- Version de PHP: 5.3.5
     
    SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";
     
     
    /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
    /*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
    /*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
    /*!40101 SET NAMES utf8 */;
     
    --
    -- Base de données: `darkminevqs4`
    --
     
    -- --------------------------------------------------------
     
    --
    -- Structure de la table `accounts`
    --
     
    CREATE TABLE IF NOT EXISTS `accounts` (
      `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
      `playername` varchar(255) NOT NULL,
      `password` varchar(255) NOT NULL,
      `pwtype` tinyint(2) unsigned NOT NULL DEFAULT '0',
      `email` varchar(100) NOT NULL,
      `registerdate` date NOT NULL,
      `registerip` char(45) NOT NULL,
      `lastlogindate` datetime NOT NULL,
      `lastloginip` char(45) NOT NULL,
      `active` tinyint(1) unsigned NOT NULL DEFAULT '0',
      PRIMARY KEY (`id`)
    ) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=7 ;
     
    --
    -- Contenu de la table `accounts`
    --
     
    INSERT INTO `accounts` (`id`, `playername`, `password`, `pwtype`, `email`, `registerdate`, `registerip`, `lastlogindate`, `lastloginip`, `active`) VALUES
    (6, 'anju', 'anju', 0, 'anju', '2012-10-05', '', '0000-00-00 00:00:00', '', 0);

  10. #10
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro Andry Aimé
    Inscrit en
    septembre 2007
    Messages
    7 089
    Détails du profil
    Informations personnelles :
    Nom : Homme Andry Aimé
    Localisation : Ile Maurice

    Informations forums :
    Inscription : septembre 2007
    Messages : 7 089
    Points : 11 121
    Points
    11 121

    Par défaut

    Citation Envoyé par thebarbarius Voir le message
    S'il vous plait aider moi.
    On ne t'aide pas là ?
    N'attend pas qu'on va coder à ta place.

    A+.

  11. #11
    Inactif
    Inscrit en
    octobre 2008
    Messages
    826
    Détails du profil
    Informations forums :
    Inscription : octobre 2008
    Messages : 826
    Points : 128
    Points
    128

    Par défaut

    J'ai trouvé l'erreur et je vous remercie.

+ Répondre à la discussion
Cette discussion est résolue.

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •