IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Session & POO


Sujet :

Langage PHP

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Août 2012
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Août 2012
    Messages : 4
    Points : 1
    Points
    1
    Par défaut Session & POO
    Bonjour,
    Alors avant d'expliquer mon problème, ce bout de code est juste un essai pour m’entraîner à la POO.
    Mon problème :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
     
    <?php
     
    class Membre {
    private $pseudo;
    private $password;
    private $nom;
    private $age;
     
    function __construct($pseudo, $password, $nom, $age)
    {
    $this->pseudo = $pseudo;
    $this->password = $password;
    $this->nom = $nom;
    $this->age = $age;
    }
     
    function Affiche()
    {
    echo ''.$this->pseudo.'<br />';
    echo ''.$this->nom.'<br />';
    echo ''.$this->age.'<br />';
    }
     
    function Add()
    {	
    try 
    {
    $db = new PDO('mysql:host=localhost;dbname=test', 'root', '');
    }
     
    catch(PDOException $error) 
    {
    die("Error: " . $error->getMessage());
    }
     
    $req = $db->prepare("INSERT INTO test (pseudo, password, nom, age)VALUES(?, ?, ?, ?)");
    $req->execute(array($this->pseudo, md5($this->password), $this->nom, $this->age));
     
    }
     
    function Connexion()
    {
    try
    {
    $db = new PDO('mysql:host=localhost;dbname=test', 'root', '');
    }
     
    catch(PDOException $error)
    {
    die("Error: " . $error->getMessage());
    }
     
    $req = $db->prepare("SELECT id, pseudo, nom, age FROM test WHERE pseudo = :pseudo AND password = :password");
    $req->execute(array('pseudo' => $pseudo, 'password' => $password));
     
    $resultat = $req->fetch();
     
    if(!$resultat)
    {	
    echo 'Mauvais password ou compte inexistant !';
    }
    else
    {
    $_SESSION['pseudo'] = $this->pseudo;
    $_SESSION['nom'] = $this->nom;
    $_SESSION['age'] = $this->age;
    }
     
    }
     
    }
    if(isset($_POST['submit_ins']))
    {
     
    $pseudo = htmlspecialchars($_POST['pseudo']);
    $nom = htmlspecialchars($_POST['nom']);
    $age = $_POST['age'];
     
    $membre = new Membre(''.$pseudo.'', ''.$password.'', ''.$nom.'', ''.$age.'' );
    $membre->Affiche();
    $membre->Add();
    }
    if(isset($_POST['submit_co']))
    {
     
    $pseudo = htmlspecialchars($_POST['pseudo']);
    $password = md5($_POST['password']);
     
    $membre = new Membre(''.$pseudo.'', ''.$password.'', ''.$nom.'', ''.$age.'' );
    $membre->Connexion();
    }
    ?>
    <form method="post" action="index.php">
    <input type="text" name="pseudo" /><br />
    <input type="password" name="password" /><br />
    <input type="text" name="nom" /><br />
    <input type="int" name="age" /><br />
    <input type="submit" name="submit_ins" value="ok" /><br /><br /><br />
    </form>
     
    <form method="post" action="index.php">
    <input type="text" name="pseudo" /><br />
    <input type="password" name="password" /><br />
    <input type="submit" name="submit_co" value="ok" /><br />
    </form>

    Comme je l'ai dis, ce bout de code est juste pour m'entraîner, l'inscription fonctionne très bien, le problème c'est la connexion d'un membre à la BDD, à cet endroit :
    Citation de index.php :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
     
    function Connexion()
    {
    try
    {
    $db = new PDO('mysql:host=localhost;dbname=test', 'root', '');
    }
     
    catch(PDOException $error)
    {
    die("Error: " . $error->getMessage());
    }
     
    $req = $db->prepare("SELECT id, pseudo, nom, age FROM test WHERE pseudo = :pseudo AND password = :password");
    $req->execute(array('pseudo' => $pseudo, 'password' => $password));
     
    $resultat = $req->fetch();
     
    if(!$resultat)
    {	
    echo 'Mauvais password ou compte inexistant !';
    }
    else
    {
    $_SESSION['pseudo'] = $this->pseudo;
    $_SESSION['nom'] = $this->nom;
    $_SESSION['age'] = $this->age;
    }
     
    }
    Si certain connaissent une solution à mon problème avec des explications je suis preneur !
    Merci d'avance !

  2. #2
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Ce serait bien si tu nous disais qu'est-ce qui ne fonctionne pas. Tu as un message d'erreur ? une page blanche ? ou juste pas de connexion ?

    Et question stupide : tu as bien un session_start() quelque part ?

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Août 2012
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Août 2012
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    Bonjour,
    C'est vrai que j'ai mal expliqué mon problème, en fait, l'inscription d'un membre fonctionne correctement, mais quand on essai de se connecter, ce message apparaît :
    Viince
    Mauvais password ou compte inexistant !

    Le "Viince" car le pseudo rentré dans le input, et le message car le membre n'existe pas ou le password est incorrect !

    Et oui il y a bien le session_start();

  4. #4
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Par défaut, fetch retourne un tableau de résultats ou false en cas d'erreur. Tu peux essayer de faire un var_dump sur $resultat, histoire de voir ce que te renvoie la fonction.

  5. #5
    Nouveau Candidat au Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Août 2012
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Août 2012
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    Ca me renvoi NULL, avant et après avoir rentré le formulaire

  6. #6
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Bon, du coup, ça veut dire que ta requête ne renvoie aucun résultat, pas une erreur, juste pas de résultats.
    Attention à ton tableau de paramètres, il te manque les : devant les noms de paramètres :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $req = $db->prepare("SELECT id, pseudo, nom, age FROM test WHERE pseudo = :pseudo AND password = :password");
    $req->execute(array(':pseudo' => $pseudo, ':password' => $password));

  7. #7
    Nouveau Candidat au Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Août 2012
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Août 2012
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    $resultat me renvoi NULL, même avec les :, je ne pourrais pas répondre aux prochaines réponses, je pars ! je vérifierai ce soir, merci quand même !

Discussions similaires

  1. compte utilisateur SESSION et POO
    Par skyser dans le forum Langage
    Réponses: 0
    Dernier message: 29/10/2011, 10h18
  2. [POO] Sessions et objets
    Par fredo31 dans le forum Langage
    Réponses: 10
    Dernier message: 19/07/2006, 15h56
  3. [POO] PHP 5, transmettre objet dans la session
    Par FCDB dans le forum Langage
    Réponses: 2
    Dernier message: 23/05/2006, 14h26
  4. Réponses: 19
    Dernier message: 02/02/2006, 23h30
  5. Réponses: 2
    Dernier message: 09/10/2005, 15h35

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo