Page 1 sur 3

[RESOLU]Code plus interprété et pas de redirection

Posté : 26 mai 2014, 12:09
par Jexus11
Bonjour tout le monde.
C'est re moi. J'ai déjà créer un topic ya quelques dizaines de minutes, où j'expliquais un problème. Étant résolu, je refais un autre sujet pour expliquer un autre problème.

Premier problème: mon code n'est plus interprété. Je n'ai que le code HTML en brut d'afficher. Pas de mise en page rien.
Deuxième problème: La page de redirection qui est censé arriver après avoir confirmer le code ne vient pas. Je boucle sur la même pas indéfiniment. J'explique. En faite, c'est une page de confirmation avec un code par sms. LE client s'inscrit, arrive sur cette page et reçois un code par sms qu'il doit rentrer dans e champs prévu à cet effet. Ce code est comparé à celui dans la base, et si il est juste, il est rediriger vers une autre page. Le problème, c'est que la redirecyion ne se fait pas.


Voilà le code entier:
<?php
header('Content-Type: text/htmrset=UTF-8');
// fichiers de conf
require "../phprequire/config.php";
require "../phprequire/pdo.php";
?>
<br />
<?php
if ((!empty($_POST['etapeFinale'])) && isset($_POST['etapeFinale'])) {
      // Envoie des données personelles
      $stmt = null;
      $bdd = null;
      $unactiveUser = 0;
      $unactiveSociete = 0;
      $passUser = md5($_POST['codeSms']);

      try {
        $bdd = PDO2::getInstance();
        //$pdo->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING );
        $stmt = $bdd-> prepare("INSERT INTO users(nomUser, prenomUser, loginUser, fonctionUser, telUser, emailUser, passwordUser, activeUser) 
                                VALUES(:nomUser, :prenomUser, :loginUser, :fonctionUser, :telUser, :emailUser, :passwordUser, :activeUser)");
        //$res = $pdo->prepare($req);
        $stmt->bindParam('nomUser', $_POST['nomDoc'], PDO::PARAM_STR);
        $stmt->bindParam('prenomUser', $_POST['prenomDoc'], PDO::PARAM_STR);
        $stmt->bindParam('loginUser', $_SESSION['loginDoc'], PDO::PARAM_STR);
        $stmt->bindParam('fonctionUser', $_POST['specialiteDoc'], PDO::PARAM_STR);
        $stmt->bindParam('telUser', $_POST['telephoneDoc'], PDO::PARAM_STR);
        $stmt->bindParam('emailUser', $_POST['mailDoc'], PDO::PARAM_STR);
        $stmt->bindParam('passwordUser', $passUser, PDO::PARAM_STR);
        $stmt->bindParam('activeUser', $unactiveUser, PDO::PARAM_STR);
        $stmt->execute();
        $idUser = $bdd->lastInsertId();
        $_SESSION['lastId'] = $idUser;

      } catch (PDOException $e) {
          $bdd = PDO2::getInstance();
          $pdoEx1 = "echo 'Erreur insert into users : ' . $e->getMessage();";
          // il y a de forte chance pour $stmt n'exisquand tu arrive ici (lorsque le prépare se vautre par
          // exemple
      }


      // Envoie des données du cabinet
      $stmt2 = null;
      $bdd2 = null;
      try {
        $bdd2 = PDO2::getInstance();
        $stmt2 = $bdd2-> prepare("INSERT INTO societes(nomSociete, adresseSociete, cpSociete, villeSociete, telSociete, emailSociete, activeSociete) 
                                VALUES(:nomSociete, :adresseSociete, :cpSociete, :villeSociete, :telSociete, :emailSociete, :activeSociete)");
        $stmt2->bindParam('nomSociete', $_POST['nomCab'], PDO::PARAM_STR);
        $stmt2->bindParam('adresseSociete', $_POST['adresseCab'], PDO::PARAM_STR);
        $stmt2->bindParam('cpSociete', $_POST['cpCab'], PDO::PARAM_STR);
        $stmt2->bindParam('villeSociete', $_POST['villeCab'], PDO::PARAM_STR);
        $stmt2->bindParam('telSociete', $_POST['telephoneCab'], PDO::PARAM_STR);
        $stmt2->bindParam('emailSociete', $_POST['mailCab'], PDO::PARAM_STR);
        $stmt2->bindParam('activeSociete', $unactiveSociete, PDO::PARAM_STR);

        
        $stmt2->execute();

      } catch (PDOException $e) {
          $bdd2 = PDO2::getInstance();
          $pdoEx2 = "echo 'Erreur insert into societes : ' . $e->getMessage();";
          // il y a de forte chance pour $stmt n'existe pas quand tu arrive ici (lorsque le prépare se vautre par
          // exemple
      }
      //header('location: confirmSms.php');
  }else{
  //echo "pbb!!";
  }

// Confirmation par SMS

if (isset($codeSms)) 
{
  $codeSms = filter_input(INPUT_POST, 'codeSms');
  $codeSmsHash = md5($codeSms);
  $_SESSION['codeSmsHash'] = $codeSmsHash;

  $stmt4 = null;
  $bdd = null;
  try
  {
      $bdd = PDO2::getInstance();
      // Préparation de la requête
      $stmt4 = $bdd->prepare("SELECT passwordUser FROM users WHERE idUser = :idUser");
      
      // Exécution de la requête en passant les marqueurs et leur variables associées dans un tableau
      $stmt4->execute(array(':idUser'=>$_SESSION['lastId'])) or die('erreur requete');
      
      // Création du tableau du résultat avec fetchAll qui récupère tout le tableau en une seule fois
      $resultat = $stmt4->fetchAll(); 
      $nb_result = count($resultat);
      var_dump($resultat);
      if ($_SESSION['codeSmsHash'] === $resultat[0]['passwordUser'])
      {
          /* Démarre une session si aucune n'est déjà existante et enregistre le pseudo dans la variable de session $_SESSION['login'] qui donne au visiteur la possibilité de se connecter.  */
          if (!session_id()) session_start();
          $_SESSION['login'] = $_SESSION['loginUser'];
                          
          //$message = 'Bonjour '.htmlspecialchars($_SESSION['login']).', vous êtes connecté';
          //ou redirection vers une page en cas de succès ex : menu.php
          header("Location: https://agendapro.fr");
          exit();

          //Si vous voulez récupérer les données elles se trouvent dans la première et unique ligne du tableau $resultat par exemple
          //$result = $resultat[0];
          //echo $result['pseudo'];
          //echo $result['date_enregistrement'];
          
      }
      else if ($nb_result > 1)
      {
              // Par sécurité si plusieurs réponses de la requête mais si la table est bien construite on ne devrait jamais rentrer dans cette condition
              $message = 'Problème de d\'unicité dans la table';
      }
      else
      {   // Le pseudo ou le mot de passe sont incorrect
              $message = 'Code SMS incorrect.';
      }

  }
  catch (PDOException $e)
  {
          $message = 'Problème dans la requête de sélection';
  }
  echo $resultat[0]['passwordUser'];
}
?>
<!DOCTYPE html>
<html lang="fr">
  <head>
    <title>Bienvenue sur Docteur Rendez-Vous !</title>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <meta http-equiv="Content-Language" content="fr" />
    <!-- Encodage utf8 -->
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
    <!-- Chargement du framework bootstrap -->
    <link rel="stylesheet" href="<?php echo CHEMIN_LIB;?>bootstrap/css/bootstrap.css" type="text/css" />
    <link rel="stylesheet" href="<?php echo CHEMIN_LIB;?>bootstrap/css/bootstrap-theme.css" type="text/css" />

    <!-- Chargement style CSS -->
    <link rel="stylesheet" href="<?php echo CHEMIN_LIB;?>css/styles.css" type="text/css" media="screen" />
    <!-- favicon -->
    <link rel="shortcut icon" href="favicon.ico">
    
    <script type="text/javascript">
      function validation() {
        return confirm('Confirmer l\'enregistrement ');
      }
    </script>
  </head>

  <body>
    <div class="container">
      <div><a class="navbar-brand" href="../index.php"><img src="<?php echo CHEMIN_LIB;?>images/logo.png" alt="logo image"></a></div><br><br><br><br><br><br>
    </div>

    <?php 
      echo $_SESSION['codeSms']."<br />";
    ?>

    <div class="container">
      <form method="post">
        <fieldset>
          <legend>Veuillez entrer le code que nous vous avons envoyé par SMS:</legend>
          <input type="text" placeholder="Code SMS" id="codeSMS" name="codeSMS" />
          <input type="submit" value="Confirmer" />
        </fieldset>
      </form>
    </div>

    <!-- Librairie jQuery + js bootstrap -->
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
    <script type="text/javascript" src="../bootstrap/js/bootstrap.js"></script>
  </body>
</html>

Les deux sont sur le même fichier, l'un en dessous de l'autre.

Qu'est ce qui engendre les deux problème cités plus haut?

Merci de votre aide.

Re: Code plus interprété et pas de redirection

Posté : 26 mai 2014, 12:23
par chapt0011
if ($_SESSION['codeSmsHash'] === $resultat[0]['passwordUser'])
on n'utilise pas == ni même === pour comparer des chaines de caractères mais la fonction strcmp()
du coup tu ne rentres jamais dans ton bloc if car la condition est fausse!! --> pas de redirection...

Re: Code plus interprété et pas de redirection

Posté : 26 mai 2014, 13:07
par Jexus11
Merci pour le coup de main. Et concernant mon problème d'interprétation?
Tout le reste du site est affiché correctement, sauf cette page, qui s'affihe en brute.

Re: Code plus interprété et pas de redirection

Posté : 26 mai 2014, 13:22
par chapt0011
peut être une erreur html: vois en testant le validateur W3C ;) tu as 7 erreurs et 2 warnings
http://validator.w3.org/check si c'est la page affichée après ta redirection, essaye en virant ton exit();
de toute façon le code suivant ne sera pas éxécuté étant donné que tes conditions ne sont pas vérifiées ;)

Re: Code plus interprété et pas de redirection

Posté : 26 mai 2014, 13:27
par Jexus11
Nan c'est la page de confirmation par Sms qui ne veut plus s'afficher correctement. Et quand je le soumet à un W3C, les seuls erreur qu'il me repère sont des trucs qui ne sont pas vraiment problématique dans l'absolu, surtout des attribut de balises des trucs comme ça.

Je comprends pas pourquoi il se met soudainement à merdé, j'ai rien changer de particulier.

Re: Code plus interprété et pas de redirection

Posté : 26 mai 2014, 13:46
par chapt0011
ah dans ce cas j'ai trouvé :idea: :idea: :idea: je dirai ta toute première ligne ;)
header('Content-Type: text/htmrset=UTF-8');
remplace par
header('Content-Type: text/html;charset=UTF-8');
le bout de chaine l;cha a disparu comme par magie :P #-o

Re: Code plus interprété et pas de redirection

Posté : 26 mai 2014, 13:51
par Jexus11
J'allais justement dire que je l'avais finalement trouver.

Merci pour le coup de main.

Mais ma boucle de redirection n'est toujours pas bonne. Qu'est ce qui bug? :(

C'est chiant php... x)

Re: Code plus interprété et pas de redirection

Posté : 26 mai 2014, 13:55
par chapt0011
Reposte ton code actuel qu'on y voit un peu plus clair

Re: Code plus interprété et pas de redirection

Posté : 26 mai 2014, 13:57
par Jexus11
<?php
header('Content-Type: text/html;charset=UTF-8');
// fichiers de conf
require "../phprequire/config.php";
require "../phprequire/pdo.php";

if ((!empty($_POST['etapeFinale'])) && isset($_POST['etapeFinale'])) {
      // Envoie des données personelles
      $stmt = null;
      $bdd = null;
      $unactiveUser = 0;
      $unactiveSociete = 0;
      $passUser = md5($_POST['codeSms']);

      try {
        $bdd = PDO2::getInstance();
        //$pdo->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING );
        $stmt = $bdd-> prepare("INSERT INTO users(nomUser, prenomUser, loginUser, fonctionUser, telUser, emailUser, passwordUser, activeUser) 
                                VALUES(:nomUser, :prenomUser, :loginUser, :fonctionUser, :telUser, :emailUser, :passwordUser, :activeUser)");
        //$res = $pdo->prepare($req);
        $stmt->bindParam('nomUser', $_POST['nomDoc'], PDO::PARAM_STR);
        $stmt->bindParam('prenomUser', $_POST['prenomDoc'], PDO::PARAM_STR);
        $stmt->bindParam('loginUser', $_SESSION['loginDoc'], PDO::PARAM_STR);
        $stmt->bindParam('fonctionUser', $_POST['specialiteDoc'], PDO::PARAM_STR);
        $stmt->bindParam('telUser', $_POST['telephoneDoc'], PDO::PARAM_STR);
        $stmt->bindParam('emailUser', $_POST['mailDoc'], PDO::PARAM_STR);
        $stmt->bindParam('passwordUser', $passUser, PDO::PARAM_STR);
        $stmt->bindParam('activeUser', $unactiveUser, PDO::PARAM_STR);
        $stmt->execute();
        $idUser = $bdd->lastInsertId();
        $_SESSION['lastId'] = $idUser;

      } catch (PDOException $e) {
          $bdd = PDO2::getInstance();
          $pdoEx1 = "echo 'Erreur insert into users : ' . $e->getMessage();";
          // il y a de forte chance pour $stmt n'exisquand tu arrive ici (lorsque le prépare se vautre par
          // exemple
      }


      // Envoie des données du cabinet
      $stmt2 = null;
      $bdd2 = null;
      try {
        $bdd2 = PDO2::getInstance();
        $stmt2 = $bdd2-> prepare("INSERT INTO societes(nomSociete, adresseSociete, cpSociete, villeSociete, telSociete, emailSociete, activeSociete) 
                                VALUES(:nomSociete, :adresseSociete, :cpSociete, :villeSociete, :telSociete, :emailSociete, :activeSociete)");
        $stmt2->bindParam('nomSociete', $_POST['nomCab'], PDO::PARAM_STR);
        $stmt2->bindParam('adresseSociete', $_POST['adresseCab'], PDO::PARAM_STR);
        $stmt2->bindParam('cpSociete', $_POST['cpCab'], PDO::PARAM_STR);
        $stmt2->bindParam('villeSociete', $_POST['villeCab'], PDO::PARAM_STR);
        $stmt2->bindParam('telSociete', $_POST['telephoneCab'], PDO::PARAM_STR);
        $stmt2->bindParam('emailSociete', $_POST['mailCab'], PDO::PARAM_STR);
        $stmt2->bindParam('activeSociete', $unactiveSociete, PDO::PARAM_STR);

        
        $stmt2->execute();

      } catch (PDOException $e) {
          $bdd2 = PDO2::getInstance();
          $pdoEx2 = "echo 'Erreur insert into societes : ' . $e->getMessage();";
          // il y a de forte chance pour $stmt n'existe pas quand tu arrive ici (lorsque le prépare se vautre par
          // exemple
      }
      //header('location: confirmSms.php');
  }else{
  //echo "pbb!!";
  }

// Confirmation par SMS

if (isset($codeSms)) 
{
  $codeSms = filter_input(INPUT_POST, 'codeSms');
  $codeSmsHash = md5($codeSms);
  $_SESSION['codeSmsHash'] = $codeSmsHash;

  $stmt4 = null;
  $bdd = null;
  try
  {
      $bdd = PDO2::getInstance();
      // Préparation de la requête
      $stmt4 = $bdd->prepare("SELECT passwordUser FROM users WHERE idUser = :idUser");
      
      // Exécution de la requête en passant les marqueurs et leur variables associées dans un tableau
      $stmt4->execute(array(':idUser'=>$_SESSION['lastId'])) or die('erreur requete');
      
      // Création du tableau du résultat avec fetchAll qui récupère tout le tableau en une seule fois
      $resultat = $stmt4->fetchAll(); 
      $nb_result = count($resultat);

      if (strcmp($_SESSION['codeSmsHash'], $resultat[0]['passwordUser']) == 0)
      {
          /* Démarre une session si aucune n'est déjà existante et enregistre le pseudo dans la variable de session $_SESSION['login'] qui donne au visiteur la possibilité de se connecter.  */
          if (!session_id()) session_start();
          $_SESSION['login'] = $_SESSION['loginUser'];
                          
          //$message = 'Bonjour '.htmlspecialchars($_SESSION['login']).', vous êtes connecté';
          //ou redirection vers une page en cas de succès ex : menu.php
          header("Location: https://agendapro.fr");

          //Si vous voulez récupérer les données elles se trouvent dans la première et unique ligne du tableau $resultat par exemple
          //$result = $resultat[0];
          //echo $result['pseudo'];
          //echo $result['date_enregistrement'];
          
      }
      else if ($nb_result > 1)
      {
              // Par sécurité si plusieurs réponses de la requête mais si la table est bien construite on ne devrait jamais rentrer dans cette condition
              $message = 'Problème de d\'unicité dans la table';
      }
      else
      {   // Le pseudo ou le mot de passe sont incorrect
              $message = 'Code SMS incorrect.';
      }

  }
  catch (PDOException $e)
  {
          $message = 'Problème dans la requête de sélection';
  }
  echo $resultat[0]['passwordUser'];
}
?>
<!DOCTYPE html>
<html lang="fr">
  <head>
    <title>Bienvenue sur Docteur Rendez-Vous !</title>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1" />
    <meta http-equiv="Content-Language" content="fr" />
    <!-- Encodage utf8 -->
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
    <!-- Chargement du framework bootstrap -->
    <link rel="stylesheet" href="<?php echo CHEMIN_LIB;?>bootstrap/css/bootstrap.css" type="text/css" />
    <link rel="stylesheet" href="<?php echo CHEMIN_LIB;?>bootstrap/css/bootstrap-theme.css" type="text/css" />

    <!-- Chargement style CSS -->
    <link rel="stylesheet" href="<?php echo CHEMIN_LIB;?>css/styles.css" type="text/css" media="screen" />
    <!-- favicon -->
    <link rel="shortcut icon" href="favicon.ico">
    
  </head>

  <body>
    <div class="container">
      <div><a class="navbar-brand" href="../index.php"><img src="<?php echo CHEMIN_LIB;?>images/logo.png" alt="logo image" /></a></div><br><br><br><br><br><br>
    </div>

    <?php 
      echo $_SESSION['codeSms']."<br />";
    ?>

    <div class="container">
      <form method="post">
        <fieldset>
          <legend>Veuillez entrer le code que nous vous avons envoyé par SMS:</legend>
          <input type="text" placeholder="Code SMS" id="codeSMS" name="codeSMS" />
          <input type="submit" value="Confirmer" />
        </fieldset>
      </form>
    </div>

    <!-- Librairie jQuery + js bootstrap -->
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
    <script type="text/javascript" src="../bootstrap/js/bootstrap.js"></script>
  </body>
</html>

Désolé si le code parait dégeulasse, je m'occupe pas vraiment de la propreté d'un code quand je ne l'ia pas encore complètement débuggué.

Re: Code plus interprété et pas de redirection

Posté : 26 mai 2014, 14:06
par chapt0011
t'as une erreur ou quelquechose qui s'affiche ça fait quoi qd tu valide?

Re: Code plus interprété et pas de redirection

Posté : 26 mai 2014, 14:08
par Jexus11
Je boucle sur la même page.
En gros, là je suis sur la page confirmSms.php
Je rentre mon code.
Si il est valide, je suis redirigé sur google.com (c'est un exemple)
Si il ne l'est pas, un message d'erreur me l'indique.


Or là, ni message d'erreur, ni redirection. Je boucle juste indéfiniment sur la page confirmSms.php

Re: Code plus interprété et pas de redirection

Posté : 26 mai 2014, 14:12
par chapt0011
c'est cette ligne que tu veux faire fonctionner on est d'accord?
header("Location: https://agendapro.fr");

Re: Code plus interprété et pas de redirection

Posté : 26 mai 2014, 14:13
par Jexus11
Oui, c'est ma ligne de redirection.

Re: Code plus interprété et pas de redirection

Posté : 26 mai 2014, 14:20
par chapt0011
ce que je ne comprends pas c'est
Je boucle juste indéfiniment sur la page confirmSms.php
il se passe quelquechose ou pas quand tu valide ton codesms?

Le code html et le code php ci-dessus sont-ils tous les deux dans la page confirmSMS.php?

Re: Code plus interprété et pas de redirection

Posté : 26 mai 2014, 14:22
par Jexus11
Quand je le valide, je revient sur la même page.
Si je connaîtrait pas le code derrière, je pourrais limite prendre le bouton confirmer pour un bouton réinitialiser.

Quand j'entre mon code et que je le valide, à part le champ qui se vide, il ne se passe rien.