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 :

PHP me renvoie deux vues en une seule


Sujet :

Langage PHP

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2017
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2017
    Messages : 7
    Points : 4
    Points
    4
    Par défaut PHP me renvoie deux vues en une seule
    Bonjour !

    Je créé un site (MVC) avec un espace pour se connecter.

    Après avoir finaliser les inscriptions, je souhaite pouvoir me connecter et afficher une page (cf code suivant). Le problème, c'est que lorsque j'arrive sur la page pour se connecter (première vue du site) j'ai en même temps la vue d'après connexion qui s'affiche alors qu'elle devrait s'afficher une fois que je suis connecté.

    Screen 1 : Quand j'arrive sur la page de connexion, il y a en haut à gauche le mot "Connexion" qui doit apparaitres seulement lorsqu'on est connecté.
    https://imgur.com/a/gKRaS

    Screen 2 : Quand je me connecte, la vue apparaît alors une seconde fois.
    https://imgur.com/a/gKRaS


    Le routeur.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
    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
     
     
    <?php
    require_once 'controleurVue.php';
    require_once 'controleurVueErreur.php';
    require_once 'controleurDao.php';
     
     
    /**
     *
     */
    class Routeur
    {
      private $ctrlVue;
      private $ctrlVueErreur;
      private $ctrlDao;
     
     
      function __construct()
      {
        $this->ctrlVue = new ControleurVue();
        $this->ctrlVueErreur = new ControleurVueErreur();
        $this->ctrlDao = new ControleurDao();
      }
     
      function routerRequete(){
     
        if (isset($_POST["inscription"])) {
          $this->ctrlVue->afficherVueInscription();
          return;
        }
     
        if (isset($_POST["envoyerFormInscription"])) {
          $ajout = $this->ctrlDao->ajouterUser($_POST["pseudo"],$_POST["password"],$_POST["nom"],$_POST["prenom"],$_POST["mail"],$_POST["age"]);
          if ($ajout) {
            $this->ctrlVue->afficherVueConfirmation($_POST["pseudo"]);
          }
          else{
            $this->ctrlVue->afficherVueInscription();
          }
          return;
        }
     
        if (isset($_POST["connexion"])) { // Quand on clique sur Connexion
          $verif = $this->ctrlDao->verifierUser($_POST["pseudo"],$_POST["password"]);
          if($verif) {
            $this->ctrlVue->afficherVueAccueil();
          }
          else {
            $this->ctrlVueErreur->afficherVueLoginErreur();
          }
          return;
        }
          $this->ctrlVue->afficherVueLogin();
      }
    }
     
     ?>
    La vue qui pose 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
     
    <?php
     
    class VueAccueil
    {
      function vueAccueil()
      {
        ?>
        <!DOCTYPE HTML>
        <html>
          <head>
            <link rel="stylesheet" href="public/css/reset.css">
            <link rel="stylesheet" href="public/css/general.css">
            <meta charset="utf-8">
            <title>Aldarion - Accueil</title>
          </head>
          <body>
            <p> Connexion </p>
          </body>
        </html>
        <?php
      }
    }
     ?>

    Mes autres vues :

    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
     
    <?php
     
    class VueConnexion
    {
      function vueLogin()
      {
        ?>
        <!DOCTYPE HTML>
        <html>
          <head>
            <link rel="stylesheet" href="public/css/reset.css">
            <link rel="stylesheet" href="public/css/general.css">
            <meta charset="utf-8">
            <title>Aldarion - Connexion</title>
          </head>
          <body>
            <div class="container">
              <form class="" action="index.php" method="post">
              <br>
                <input type="text" name="pseudo" placeholder="Pseudo">
                <br/> <br/>
                <input type="password" name="password" placeholder="Mot de passe">
                <br/> <br/>
                <a id="forgotPassword" href="#"> Mot de passe oublié ? </a>
                <br/> <br>
                <input type="submit" name="connexion" value="Connexion">
                <input type="submit" name="inscription" value="Inscription">
                <br> <br>
                <a href="#"> Continuer en tant que visiteur </a>
              </form>
            </div>
          </body>
        </html>
        <?php
      }
     
      function vueInscription()
      {
        ?>
        <!DOCTYPE HTML>
        <html>
          <head>
            <meta charset="utf-8">
            <title>Aldarion - Inscription</title>
            <link rel="stylesheet" href="public/css/reset.css">
            <link rel="stylesheet" href="public/css/general.css">
            <link rel="stylesheet" href="public/css/inscription.css">
          </head>
          <body>
            <div class="container">
              <h1> S'inscrire sur Aldarion </h1>
              <form class="" action="index.php" method="post">
                <br>
                <input type="text" name="nom" placeholder="Nom">
                <br> <br>
                <input type="text" name="prenom" placeholder="Prénom">
                 <br> <br>
                <input type="mail" name="mail" placeholder="Adresse e-mail">
                 <br> <br>
                <input type="text" name="age" placeholder="Age">
                <br> <br>
                <input type="text" name="pseudo" placeholder="Pseudo">
                 <br> <br>
                <input type="password" name="password" placeholder="Mot de passe">
                 <br> <br>
                <input type="password" name="password_verif"placeholder="Retaper le mot de passe">
                <br> <br>
                <input type="submit" name="envoyerFormInscription" value="Envoyer">
              </form>
            </div>
          </body>
        </html>
        <?php
      }
     
      function vueConfirmer($login){
        ?>
        <!DOCTYPE HTML>
        <html>
          <head>
            <meta charset="utf-8">
            <link rel="stylesheet" href="public/css/reset.css">
            <link rel="stylesheet" href="public/css/general.css">
            <title>Aldarion - Confirmation</title>
          </head>
          <body>
            <div class="container">
              <form class="" action="index.php" method="post">
                <h1> Confirmation d'inscription </h1> <br>
                <p> Félicitations <span style="font-weight:bold"> <?php echo $login ?> </span> votre compte est créé et prêt à être utilisé ! </p> <br>
                <input type="submit" name="boutonConnexionConfirmation" value="Se connecter">
              </form>
            </div>
          </body>
        </html>
        <?php
      }
    }
     ?>
    Le problème viendrait du fait que la vue se lancerait toute seule ? Etrange sachant qu'il y a une condition dans le routeur. J'ai vérifié le isset avec un var_dump à la fin avant d'afficher mon formulaire de connexion et c'est à NULL donc impossible de passer dans la boucle... Pourquoi m'affiche t'il cette page ? Et surtout, pourquoi celle-ci alors qu'il n'y a pas de problèmes pour les autres

  2. #2
    Membre expert
    Avatar de Dendrite
    Femme Profil pro
    Développeuse informatique
    Inscrit en
    Juin 2008
    Messages
    2 129
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 58
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeuse informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2008
    Messages : 2 129
    Points : 3 627
    Points
    3 627
    Billets dans le blog
    8
    Par défaut
    Salut.

    A tout hasard, que retourne très exactement ta méthode verifierUser ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    $verif = $this->ctrlDao->verifierUser($_POST["pseudo"],$_POST["password"]);
    echo '<pre>';
    print_r($verif);
    echo '</pre>';
    break;
    if($verif) {
    Si tu souhaites tester true, et précisément true, tu as peut-être intérêt à écrire ainsi ton test

    PDO, une soupe et au lit !
    Partir de la fin est un bon moyen de retrouver son chemin. Bibi - 2020

  3. #3
    Membre expert
    Avatar de Dendrite
    Femme Profil pro
    Développeuse informatique
    Inscrit en
    Juin 2008
    Messages
    2 129
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 58
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeuse informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2008
    Messages : 2 129
    Points : 3 627
    Points
    3 627
    Billets dans le blog
    8
    Par défaut
    Autres questions :

    Pourquoi faire des if et pas des elseif dans ton routeur ?
    Tes conditions ne s'excluent-elles par l'une l'autre ?

    Pourquoi coder return; ?
    Je ne connais pas cette syntaxe. Pour moi, c'est
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    return true;//à placer dans la condition où l'on considère que tout se passe nickel
    PDO, une soupe et au lit !
    Partir de la fin est un bon moyen de retrouver son chemin. Bibi - 2020

  4. #4
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2017
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2017
    Messages : 7
    Points : 4
    Points
    4
    Par défaut
    Salut !

    Merci pour ta réponse.

    J'ai modifié selon ce que tu 'as dis en intégrant des elseif puisque effectivement mes conditions s'excluent mutuellement. Par ailleurs. Ma variable $verif me renvoie 1. L'erreur ne change pas même en ayant mis ($verif == true) dans ma condition.

  5. #5
    Membre expert
    Avatar de Dendrite
    Femme Profil pro
    Développeuse informatique
    Inscrit en
    Juin 2008
    Messages
    2 129
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 58
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeuse informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2008
    Messages : 2 129
    Points : 3 627
    Points
    3 627
    Billets dans le blog
    8
    Par défaut
    1) Relis... "===", pas "=="

    2) Montre ton code modifié à chaque fois.

    3) Sinon, en lisant vite fait, je ne vois pas de formulaire avec un bouton de type submit qui a pour name="connexion", alors je vois pas comment tu pourrais avoir une variable $_POST['connexion']
    PDO, une soupe et au lit !
    Partir de la fin est un bon moyen de retrouver son chemin. Bibi - 2020

  6. #6
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2017
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2017
    Messages : 7
    Points : 4
    Points
    4
    Par défaut
    My bad pour le " === ". Ca m'affiche quand même 1.

    J'ai modifié mon routeur pour afficher des messages de DEBUG, il m'affiche DEBUG 1 et 14 alors que le message de connexion est toujours présent ..

    Les headers pourraient-ils jouer quelque chose ? J'avoue que j'ai du mal à comprendre ce qu'il se passe.

    Le routeur :

    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
    <?php
    require_once 'controleurVue.php';
    require_once 'controleurVueErreur.php';
    require_once 'controleurDao.php';
    require_once 'controleurPassword.php';
     
     
    /**
     *
     */
    class Routeur
    {
      private $ctrlVue;
      private $ctrlVueErreur;
      private $ctrlDao;
      private $ctrlPassword;
     
     
      function __construct()
      {
        $this->ctrlVue = new ControleurVue();
        $this->ctrlVueErreur = new ControleurVueErreur();
        $this->ctrlDao = new ControleurDao();
        $this->ctrlPassword = new ControleurPassword();
      }
     
      function routerRequete(){
        echo "DEBUG 1";
        if (isset($_POST["inscription"])) {
          echo "DEBUG 2";
          $this->ctrlVue->afficherVueInscription();
        }
     
        elseif (isset($_POST["envoyerFormInscription"])) {
          echo "DEBUG 4";
          $ajout = $this->ctrlDao->ajouterUser($_POST["pseudo"],$_POST["password"],$_POST["nom"],$_POST["prenom"],$_POST["mail"],$_POST["age"]);
          if ($ajout) {
            echo "DEBUG 5";
            $this->ctrlVue->afficherVueConfirmation($_POST["pseudo"]);
          }
          else{
            echo "DEBUG 6";
            $this->ctrlVueErreur->afficherVueInscriptionErreur($_POST["password"],$_POST["nom"],$_POST["prenom"],$_POST["mail"],$_POST["age"]);
          }
     
        }
        elseif (isset($_POST["connexion"])) {
          echo "DEBUG 8";
          $verif = $this->ctrlDao->verifierUser($_POST["pseudo"],$_POST["password"]);
          echo '<pre>';
          print_r($verif);
          echo '</pre>';
          if($verif === true) {
            echo "DEBUG 9";
            $pseudo = $this->ctrlDao->getPseudoByLogin($_POST["pseudo"]);
            $_SESSIONS["idUser"] = $this->ctrlDao->affecterIdSession($pseudo);
            $this->ctrlVue->afficherVueAccueil($pseudo);
          }
          else {
            echo "DEBUG 10";
            $this->ctrlVueErreur->afficherVueLoginErreur();
          }
          return true;
        }
        elseif (isset($_GET["passForgot"])) {
          echo "DEBUG 11";
          if ($_GET["passForgot"] == 1) {
            echo "DEBUG 12";
            $this->ctrlPassword->afficherVueResetPassword();
          }
          echo "DEBUG 13";
          return true;
        }
        else {
          echo "DEBUG 14";
          $this->ctrlVue->afficherVueLogin();
          return true;
        }
      }
    }
     
     ?>
    le name "connexion" est a la ligne 27 du dernier bloc de code que j'ai posté La connexion fonctionne hein. Le problème c'est qu'il me charge le contenue HTML avant de me connecter. Et justement, je ne comprends pas pourquoi ca me charge ce contenu...

  7. #7
    Membre expert
    Avatar de Dendrite
    Femme Profil pro
    Développeuse informatique
    Inscrit en
    Juin 2008
    Messages
    2 129
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 58
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeuse informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2008
    Messages : 2 129
    Points : 3 627
    Points
    3 627
    Billets dans le blog
    8
    Par défaut
    Je ne sais pas si c'est moi qui ne comprends pas vite ou toi qui n'explique pas clairement... P'têt bien les deux...
    Mais on va tout remettre sur la table :
    Voici précisément ce que je comprends de ton algo :

    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
    /*Si validation inscription
    	affiche vue inscription
     
    SinonSi validation envoyer form inscription
    	ajoute l'utilisateur en base
    	Si ajout
    		affiche vue confirmation
    	sinon affiche vue inscription erreur
     
    SinonSi validation connexion
    	verifie user
    	Si verif est exactement à true (et pas 1 ou autre chose)
    		recupere le pseudo par le login
    		affecte l'id de session
    		affiche la vue accueil de ce pseudo
     
    	Sinon
    		affiche vue login erreur
     
    SinonSi il y a un passForgot dans l'url
    	si ce passForgot=1
    		affiche vue Reset password
     
    Sinon (il arrive)
    	affiche vue login*/
    Quelle partie de l'algo ne fonctionne pas comme tu veux ?
    Il passe bien dans sinonsi validation connexion, mais ensuite au lieu de t'afficher la vue accueil propre à CE pseudo, il t'affiche la vue login (anormal) + accueil propre à ce pseudo (normal) ?
    C'est ça que tu dis ?

    Montre nous cette méthode dans ce cas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     $this->ctrlVue->afficherVueAccueil($pseudo);
    Et puis si $verif vaut 1 quand tout est bon, reviens à ton code antérieur $verif==true //ou $verif===1
    PDO, une soupe et au lit !
    Partir de la fin est un bon moyen de retrouver son chemin. Bibi - 2020

  8. #8
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2017
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2017
    Messages : 7
    Points : 4
    Points
    4
    Par défaut
    On se comprend mal mais e regardant avec un ami, j'ai pu résoudre mon problème.

    Le problème était que en arrivant sur la vue pour se connecter, il m'affichait en même temps une vue qui ne devait apparraitre lorsqu'on se connecte

    Ce qui doit se passer :

    J'arrive sur le site -> Je me connecte -> Afficher "Bienvenue Darckoxe"

    Ce qu'il se passe :

    J'arrive sur le site -> Afficher "Bienvenue ..." -> Je me connecte -> Afficher "Bienvenue ..." et Afficher "Bienvenue Darckoxe"

    Bon, pour mon problème, c'est que je n'avais pas créé de constructeur de mes vues. Du coup, quand on instanciait la vue, ca ne trouvait pas le constructeur donc il laissait tomber php mais affichait le code html

    Je le passe en résolu, merci pour ton aide !

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

Discussions similaires

  1. integrer deux requetes dans une seule requete access
    Par laurent.w dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 27/12/2006, 15h11
  2. effacer un enregitrement de deux tables en une seule requete
    Par mikebranque dans le forum Langage SQL
    Réponses: 1
    Dernier message: 05/10/2006, 13h30
  3. [VB6] "Concaténation" de deux images en une seule
    Par KrusK dans le forum VB 6 et antérieur
    Réponses: 22
    Dernier message: 07/07/2006, 09h45
  4. Réponses: 8
    Dernier message: 27/06/2006, 07h40
  5. (Performance) Deux tables ou une seule?
    Par Norin dans le forum Access
    Réponses: 26
    Dernier message: 24/06/2006, 20h43

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