Partage
  • Partager sur Facebook
  • Partager sur Twitter

Page de login en PDO. Redirection ne marche pas.

    27 avril 2017 à 15:00:59

    Bonjour !

    Je m'en remet à vous car je sèche totalement ..

    Je m'explique, j'ai une page de connexion, avec une BDD. 

    Lorsque je test la connexion, tout est opérationnel. Mais ne me redirige pas vers la page que je souhaite (Me redirige pas du tout en faite.. :') ).

    Elle devrait me rediriger vers "dashboard.php" et avoir accès à ma "page membre".

    <div id="connexion_div">
    			<form action="./connexion.php" method="POST">
    				<h3>Connexion</h3>
    				<input type="text" class="form-control connexion_in" id="mail" name="mail" placeholder="Email" value="dudsk@gmail.com" /><br />
    				<input type="password" class="form-control connexion_in" id="password" name="password" placeholder="Mot de passe" value="dudusk" /><br />
    				<input type="submit" class="btn btn-primary connec" value="Se connecter"/>
    			</form>
    		</div>
    		<?php
    
    			if(isset($_GET['action']) && $_GET['action'] == "deconnexion")
    			{	
    				echo 'Deco';
    				session_destroy();
    				header('Location: ./connexion.php');
    			}
    
    			if($_POST){
    			    $req = "SELECT * FROM users WHERE mail='$_POST[mail]'";
    
    			    $resultat = $pdo->prepare($req);
    				$resultat->execute(array(
    							    'mail' => $mail,
    							    'password' => $pasword));
    
    			    //var_dump($resultat);
    
    			    if($resultat->rowCount() != 0)
    			    {
    			        $membre = $resultat->fetch(PDO::FETCH_ASSOC);
    
    				    if($membre['password'] == $_POST['password'] && $membre['mail'] == $_POST['mail']) {
    
    				    	session_start();
    					    $_SESSION['mail'] = $mail;
    					    
    					    echo '<p>Vous etes bien logué</p>';
    					    header('Location: dashboard.php');
    					    exit;
    					}
    					else {
    					    echo '<p>Mauvais login / password. Merci de recommencer</p>';
    					    exit;
    					}  
    				}
    			}
    
    		?>

    Voici mon code. 

    Je vous remercie par avance pour votre aide !

    Cordialement.

    • Partager sur Facebook
    • Partager sur Twitter
      27 avril 2017 à 15:04:20

      Débug ton code avec des var_dump() ou eho, afin de voir ou ça bloque. A mon avis tu ne n'entre pas dans tout tes if()
      • Partager sur Facebook
      • Partager sur Twitter
        27 avril 2017 à 15:05:55

        bonjour,

        un grand classique !

        petit rappel : la fonction header doit être appelé AVANT d'envoyer quoi que ce soit a l'affichage !!

        http://php.net/manual/fr/function.header.php

        la tu affiche ton formulaire de connexion avant donc ça ne marchera jamais.

        tu as même un echo juste avant ton  header (la ligne au dessus)

        -
        Edité par rincevent01 27 avril 2017 à 15:06:57

        • Partager sur Facebook
        • Partager sur Twitter
        pensez au "+1" si ça vous a aider, ça fait toujours plaisir ;)
          27 avril 2017 à 15:18:22

          Bonjour,

          Pour compléter, divise ton script en deux : la partie front (ton formulaire) et la partie back (le script php), le premier pointant vers le deuxième qui gère les redirections.

          Pour l'affichage des erreurs, soit tu déclares une variable qui gère l'affichage des messages dans ton formulaire (type $error = true), soit tu pousses vers le gestion des exceptions.

          • Partager sur Facebook
          • Partager sur Twitter
            27 avril 2017 à 15:24:17

            Salut romsVLM !

            J'ai mis des var_dump() et echo un peu partout, et je les ai tous :( (Tu me diras, c'est une bonne nouvelle, la connexion a la BDD fonctionne et tout)

            Holà rincevent01 !

            J'ai donc mis le code PHP au dessus de tout contenu, maintenant, la page de connexion reste, avec les formulaires en moins ! :o ainsi qu'enlever tous les espaces (comme dit dans la doc, si j'ai bien compris ?)

            <body class="body_co">
            		<?php 
            		include_once("./sheets/init.php");
            			if(isset($_GET['action']) && $_GET['action'] == "deconnexion")
            			{	
            				header('Location: ./connexion.php');
            				session_destroy();
            			}
            			if($_POST){
            			    $req = "SELECT * FROM users WHERE mail='$_POST[mail]'";
            			    $resultat = $pdo->prepare($req);
            				$resultat->execute(array(
            							    'mail' => $mail,
            							    'password' => $pasword));
            			    if($resultat->rowCount() != 0)
            			    {
            			        $membre = $resultat->fetch(PDO::FETCH_ASSOC);
            				    if($membre['password'] == $_POST['password'] && $membre['mail'] == $_POST['mail']) {
            				    	header('Location: ./dashboard.php');
            				    	session_start();
            					    $_SESSION['mail'] = $mail;
            					    //exit;
            					}
            					else {
            					    echo '<p>Mauvais login / password. Merci de recommencer</p>';
            					    exit;
            					}  
            				}
            			}
            
            		
            		?>
            
            		<div id="connexion_div">
            			<form action="./connexion.php" method="POST">
            				<h3>Connexion</h3>
            				<input type="text" class="form-control connexion_in" id="mail" name="mail" placeholder="Email" value="dudsk@gmail.com" /><br />
            				<input type="password" class="form-control connexion_in" id="password" name="password" placeholder="Mot de passe" value="dudusk" /><br />
            				<input type="submit" class="btn btn-primary connec" value="Se connecter"/>
            			</form>
            		</div>

            Yop adrienrosi !

            Je compte les séparer ! :p Mais .. Je pensais que c'était plus simple de définir comme tel, enfin, de la montrer comme ça :)

            Merci de vos réponses super rapides !

            -
            Edité par DuskWood 27 avril 2017 à 15:27:45

            • Partager sur Facebook
            • Partager sur Twitter
              27 avril 2017 à 15:35:43

              tu n'as pas mis ton php au dessus de tout ... ligne 1 <body class="body_co">

              et j'imagine qu'il y a le DOCTYPE au dessus non ?

              et je ne suis pas sur que le code après un header soit exécuté exemple ligne 6 le header et ligne 7 je ne pense pas que le sessison_destroy fonctionne. Idem ligne 19, 20 et 21

              et je ne comprend pas ta requête, tu prépares une requête avec le $_POST ?? puis tu exécute avec un array qui n'est pas utilisé ?

              -
              Edité par rincevent01 27 avril 2017 à 15:41:40

              • Partager sur Facebook
              • Partager sur Twitter
              pensez au "+1" si ça vous a aider, ça fait toujours plaisir ;)
                27 avril 2017 à 15:36:51

                                    if($membre['password'] == $_POST['password'] && $membre['mail'] == $_POST['mail']) {
                 
                                        session_start();
                                        $_SESSION['mail'] = $mail;
                                         
                                        echo '<p>Vous etes bien logué</p>';
                                        header('Location: dashboard.php');
                                        exit;
                                    }



                Divise ton code, comme ça tu n'aura plus de problème avec le header (html d'un côté, PHP de l'autre)

                -
                Edité par romsVLM 27 avril 2017 à 15:39:16

                • Partager sur Facebook
                • Partager sur Twitter
                  27 avril 2017 à 15:40:44

                  Rincevent01,

                  En effet ! Faut vraiment mettre en dehors du HTML alors ! Je n'avais pas bien compris tes dires alors !

                  Il faudrait donc que je mette la ligne 20 et 21 avant la 19 et de même pour ligne 6 et 7 ?

                  La page est maintenant fonctionnelle :D 

                  Je vais tenter de comprendre le "$_SESSION['mail'] = $mail;" désormais !:p 

                  Pour ce qui est du array, c'était juste un test e compréhension pour moi ! (qui fonctionne pas trop mdr) je l'ai transformé en "$resultat->execute();" tout simplement :)

                  RomsVLM,

                  Je viens de comprendre exactement le fonctionnement du header() du coup haha merci ! :D 

                  -
                  Edité par DuskWood 27 avril 2017 à 15:44:40

                  • Partager sur Facebook
                  • Partager sur Twitter

                  Page de login en PDO. Redirection ne marche pas.

                  × 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