Partage
  • Partager sur Facebook
  • Partager sur Twitter

Problème avec mon système de connexion

Sujet résolu
    24 juillet 2017 à 23:07:26

    Bonjour, ayant un problème depuis longtemps, et n'arrivant pas à le résoudre seul je viens à vous, je m'explique :

    Quand je rentre mes identifiants sur mon site, celui les prends pour des identifiants incorrects, voici mon code :

    <?php
    /*Connexion à la bdd*/
    try{
    $bdd = new PDO('mysql:host=localhost;dbname=secury-talk;charset=utf8', 'root', '');
    array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION);}
    catch(Exception $e)
    {die('Erreur : '.$e->getMessage());}
    /*Connexion à la bdd*/
    
    
    
    /*Récupération données de la bdd*/		
    $req = $bdd->prepare('SELECT id, nom, prenom, email FROM utilisateurs WHERE pseudo = :pseudo AND mdp = :mdp');
    $req->execute(array(
    'pseudo' => $_POST['pseudo'],
    'mdp' => $_POST['mdp']));
    $resultat = $req->fetch();
    /*Récupération données de la bdd*/
    
    /*Connexion échoué*/	
    if (!$resultat)
    {header('Location: inscription.php');}
    /*Connexion échoué*/
    
    /*Connexion réussie*/
    else
    {session_start();
    $_SESSION['id'] = $resultat['id'];
    $_SESSION['nom'] = $resultat['nom'];
    $_SESSION['prenom'] = $resultat['prenom'];
    $_SESSION['pseudo'] = $_POST['pseudo'];
    $_SESSION['email'] = $resultat['email'];
    header('Location: index.php');}
    /*Connexion réussie*/
    			
    ?>

    Merci d'avance pour votre aide.

    • Partager sur Facebook
    • Partager sur Twitter
    Je connais : HTML Je veux connaitre : JAVA, C++, PHP
    Anonyme
      24 juillet 2017 à 23:21:49

      peut étre que il y une erreur que je trouve pas 

      et aussi le

      session_start() // se met toujours au début la page
      //exemple
      <?php 
      session_start()
      //mon code ou autre
      // et dans le WHERE remplace le :pseudo et :mdr par ?
      ?>
      



      • Partager sur Facebook
      • Partager sur Twitter
        25 juillet 2017 à 0:11:27

        Merci pour tes conseils et je n'ai pas compris ton deuxième conseil

        -
        Edité par rochdy.ait 25 juillet 2017 à 15:45:30

        • Partager sur Facebook
        • Partager sur Twitter
        Je connais : HTML Je veux connaitre : JAVA, C++, PHP
          26 juillet 2017 à 14:35:15

          Aucune réponse ?
          • Partager sur Facebook
          • Partager sur Twitter
          Je connais : HTML Je veux connaitre : JAVA, C++, PHP
            26 juillet 2017 à 15:45:26

            Bonjour,

            On ne voit pas ton formulaire, ta BDD, s'il y a des erreurs...

            • Partager sur Facebook
            • Partager sur Twitter
              26 juillet 2017 à 16:59:44

              voici mon formulaire :

              <?php
              session_start()
              ?>
              
              <!DOCTYPE html>
              <html>
              	<head>
              		<link rel="shortcut icon" href="favicon.ico" type="image/x-icon"/> 
              		<link rel="icon" href="favicon.ico" type="image/x-icon"/>
              		<meta charset="utf-8" />
              		<link rel="stylesheet" href="css.css" />
              		<title>Secury Talk | Connexion</title>
              	</head>
              	
              	<body>
              		<?php include("menu.php"); ?>
              		<headers>
              			<h2 class="connectez_vous">Veuillez vous connecter</h2>
              		</headers>
              		<article>
              			<form method="post" action="traitement_connexion.php">
              				<p><label>Pseudo</label> : <input type="text" name="pseudo" placeholder="utilisateur123"/></p>
              				<p><label>Mot de passe</label> : <input type="password" name="mdp" id="mdp" /></p>
              				<p><label>Mémoriser le pseudo </label> <input type="checkbox" name="choix<input type="checkbox" name="choix" /></p>
              				<p><a href="mot_de_passe_oublie.php">Mot de passe oublié ?</a></p>
              				<p><a href="inscription.php">Vous êtes nouveau ?</a></p>
              				<span><input type="submit" value="se connecter" id="connexion"/></span>
              			</form>
              		</article>
              	</body>
              </html>

              Et je dois montrer quoi de ma BDD ?

               

              • Partager sur Facebook
              • Partager sur Twitter
              Je connais : HTML Je veux connaitre : JAVA, C++, PHP
                26 juillet 2017 à 17:12:54

                La structure...

                Les erreurs php, pdo sont donc activées et aucune erreur n'est renvoyée ?

                Je ne vois pas de problème évident, as-tu affiché les variables post, la requête ? Es-tu sûr de ce qu'il y a dans la table ?

                • Partager sur Facebook
                • Partager sur Twitter
                  26 juillet 2017 à 19:18:05

                  Salut,

                  Une autre question... Est-ce que le mot de passe est sauvegardé en clair dans la table ? Et faudrait aussi revoir l'indentation de ton code.

                  • Partager sur Facebook
                  • Partager sur Twitter
                  le bienfait n'est jamais perdu
                    27 juillet 2017 à 13:35:39

                    Oui il est sauvegardé en clair.

                    Voici la structure de ma BDD :

                    • Partager sur Facebook
                    • Partager sur Twitter
                    Je connais : HTML Je veux connaitre : JAVA, C++, PHP
                      27 juillet 2017 à 13:40:53

                      Salut,

                      il ne faut pas tester directement $resultat, mais sa taille (dans le plus simple des cas):

                      <?php
                      //PAS
                      if (!$resultat) {}
                      
                      //MAIS
                      if (!empty($resultat) && sizeof($resultat) == 0) {}

                      ++

                      -
                      Edité par christouphe 27 juillet 2017 à 13:41:10

                      • Partager sur Facebook
                      • Partager sur Twitter
                        27 juillet 2017 à 13:56:46

                        @rochdy.ait, tu peux nous montrer tes données.

                        @Christouphe, comme le dit la doc, fetch va renvoyer false si la requête échoue, je ne vois pas en comment sa condition est problématique...

                        -
                        Edité par WillyKouassi 27 juillet 2017 à 13:57:07

                        • Partager sur Facebook
                        • Partager sur Twitter
                        le bienfait n'est jamais perdu
                          27 juillet 2017 à 14:07:54

                          WillyKouassi a écrit:

                          @Christouphe, comme le dit la doc, fetch va renvoyer false si la requête échoue, je ne vois pas en comment sa condition est problématique...

                          -
                          Edité par WillyKouassi il y a 9 minutes


                          ça donne quoi !$resultat si $resultat est un array contenant une donnée ?

                          ++

                          • Partager sur Facebook
                          • Partager sur Twitter
                            27 juillet 2017 à 14:10:46

                            ça donnera un FALSE et il rentrera dans le else.

                            • Partager sur Facebook
                            • Partager sur Twitter
                            le bienfait n'est jamais perdu
                              27 juillet 2017 à 14:13:23

                              effectivement, j'ai fais le test entre-temps (à force de travailler avec des FW on s'y perd :p )

                              ++

                              • Partager sur Facebook
                              • Partager sur Twitter
                                27 juillet 2017 à 14:33:21

                                Voici les données(enfin si c'est ça) :

                                Et quand je tente de m'inscrire aussi, mon site me dit que mon inscription est faite mais rien ne se passe dans la BDD.

                                -
                                Edité par rochdy.ait 27 juillet 2017 à 14:33:56

                                • Partager sur Facebook
                                • Partager sur Twitter
                                Je connais : HTML Je veux connaitre : JAVA, C++, PHP
                                  27 juillet 2017 à 14:34:30

                                  teste le retour d'execute() avec un IF ;)

                                  ++

                                  EDIT: tu as mal configuré les exceptions:

                                  <?php
                                  /*Connexion à la bdd*/
                                  try{
                                  $bdd = new PDO('mysql:host=localhost;dbname=secury-talk;charset=utf8', 'root', '',
                                  array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION);



                                  -
                                  Edité par christouphe 27 juillet 2017 à 14:37:11

                                  • Partager sur Facebook
                                  • Partager sur Twitter
                                    27 juillet 2017 à 14:48:33

                                    christouphe a écrit:

                                    teste le retour d'execute() avec un IF ;)

                                    ++

                                    EDIT: tu as mal configuré les exceptions:

                                    <?php
                                    /*Connexion à la bdd*/
                                    try{
                                    $bdd = new PDO('mysql:host=localhost;dbname=secury-talk;charset=utf8', 'root', '',
                                    array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION);



                                    -
                                    Edité par christouphe il y a 2 minutes

                                    tester le retour d'un execute avec un IF ?(désolé je suis débutant)

                                    Et je ne comprends pas où est-ce que j'ai mal configuré les exception ?

                                    • Partager sur Facebook
                                    • Partager sur Twitter
                                    Je connais : HTML Je veux connaitre : JAVA, C++, PHP
                                      27 juillet 2017 à 14:51:35

                                      relis ton code de connexion à la base, ce que je t'ai donné est la correction.

                                      pour tester execute, c'est simple:

                                      <?php
                                          if (!$req>execute(array())) {
                                              echo "Erreur execute";
                                          } else {
                                              //recuperation du resultat (SELECT par exe)
                                          }

                                      ++

                                      • Partager sur Facebook
                                      • Partager sur Twitter
                                        27 juillet 2017 à 15:00:01

                                        Quand je copie ce que tu m'a donné(la connexion à la BDD), j'obtiens ça :

                                        (!) Erreur d'analyse: erreur de syntaxe, inattendue ';' Dans P: \ wamp64 \ www \ treatment_connexion.php on line 6

                                        Et en testant execute j'obtiens ça

                                        (!) Erreur fatale: appel à une fonction non définie exécuter () dans P: \ wamp64 \ www \ treatment_connexion.php on line 21
                                        • Partager sur Facebook
                                        • Partager sur Twitter
                                        Je connais : HTML Je veux connaitre : JAVA, C++, PHP
                                          27 juillet 2017 à 15:11:06

                                          1) il manque une parenthèse (tu ne bosses pas avec Eclipse ?)

                                          <?php
                                          
                                          $bdd = new PDO('mysql:host=localhost;dbname=secury-talk;charset=utf8', 'root', '',
                                          array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));

                                          2) c'est execute() pas exécuter

                                          Soit un peu attentif dans la lecture de ce qu'on te donne.

                                          ++

                                          • Partager sur Facebook
                                          • Partager sur Twitter
                                            27 juillet 2017 à 15:15:59

                                            oui je sais que c'est execute, c'est juste la traduction automatique de google chrome :)

                                            Et non je ne travaille pas sur eclipse mais avec notepad++

                                            -
                                            Edité par rochdy.ait 27 juillet 2017 à 15:16:23

                                            • Partager sur Facebook
                                            • Partager sur Twitter
                                            Je connais : HTML Je veux connaitre : JAVA, C++, PHP
                                              27 juillet 2017 à 15:17:59

                                              rochdy.ait a écrit:

                                              Et non je ne travaille pas sur eclipse mais avec notepad++

                                              -
                                              Edité par rochdy.ait il y a moins de 30s


                                              mauvais choix, travailler avec un IDE te permettrais de corriger une foule d'erreur de syntaxe que NotePad ne fait pas.

                                              ++

                                              • Partager sur Facebook
                                              • Partager sur Twitter
                                                28 juillet 2017 à 16:58:05

                                                Sinon aucune réponse ?
                                                • Partager sur Facebook
                                                • Partager sur Twitter
                                                Je connais : HTML Je veux connaitre : JAVA, C++, PHP
                                                  28 juillet 2017 à 17:13:54

                                                  J'ai testé ton code et pas eu de problème particulier pour me connecter.

                                                  As-tu apporté la correction de ton code avec la modification faite par Christouphe ? Que te donnes un var_dump($result); exit; quand tu rentres test comme pseudo et le mot de passe Test123

                                                  • Partager sur Facebook
                                                  • Partager sur Twitter
                                                  le bienfait n'est jamais perdu
                                                    28 juillet 2017 à 18:41:23

                                                    Il me retourne

                                                    <small>traitement_connexion.php:24:</small><small>boolean</small>
                                                     false
                                                    • Partager sur Facebook
                                                    • Partager sur Twitter
                                                    Je connais : HTML Je veux connaitre : JAVA, C++, PHP
                                                      28 juillet 2017 à 23:44:56

                                                      il faut remplir array() avec les bonnes valeurs ;)

                                                      ++

                                                      • Partager sur Facebook
                                                      • Partager sur Twitter

                                                      Problème avec mon système de connexion

                                                      × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                                                      × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                                                      • Editeur
                                                      • Markdown