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

Eléphanteau du PHP | 36 Messages

26 mai 2014, 12:09

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.
Modifié en dernier par Jexus11 le 26 mai 2014, 16:38, modifié 5 fois.

Eléphant du PHP | 95 Messages

26 mai 2014, 12:23

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...
La b!te et le couteau sont bien souvent les meilleurs outils...mais aussi et surtout les seuls qui sont toujours à disposition!!

Eléphanteau du PHP | 36 Messages

26 mai 2014, 13:07

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.

Eléphant du PHP | 95 Messages

26 mai 2014, 13:22

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 ;)
La b!te et le couteau sont bien souvent les meilleurs outils...mais aussi et surtout les seuls qui sont toujours à disposition!!

Eléphanteau du PHP | 36 Messages

26 mai 2014, 13:27

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.

Eléphant du PHP | 95 Messages

26 mai 2014, 13:46

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
La b!te et le couteau sont bien souvent les meilleurs outils...mais aussi et surtout les seuls qui sont toujours à disposition!!

Eléphanteau du PHP | 36 Messages

26 mai 2014, 13:51

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)

Eléphant du PHP | 95 Messages

26 mai 2014, 13:55

Reposte ton code actuel qu'on y voit un peu plus clair
La b!te et le couteau sont bien souvent les meilleurs outils...mais aussi et surtout les seuls qui sont toujours à disposition!!

Eléphanteau du PHP | 36 Messages

26 mai 2014, 13:57

<?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é.

Eléphant du PHP | 95 Messages

26 mai 2014, 14:06

t'as une erreur ou quelquechose qui s'affiche ça fait quoi qd tu valide?
La b!te et le couteau sont bien souvent les meilleurs outils...mais aussi et surtout les seuls qui sont toujours à disposition!!

Eléphanteau du PHP | 36 Messages

26 mai 2014, 14:08

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

Eléphant du PHP | 95 Messages

26 mai 2014, 14:12

c'est cette ligne que tu veux faire fonctionner on est d'accord?
header("Location: https://agendapro.fr");
La b!te et le couteau sont bien souvent les meilleurs outils...mais aussi et surtout les seuls qui sont toujours à disposition!!

Eléphanteau du PHP | 36 Messages

26 mai 2014, 14:13

Oui, c'est ma ligne de redirection.

Eléphant du PHP | 95 Messages

26 mai 2014, 14:20

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?
Modifié en dernier par chapt0011 le 26 mai 2014, 14:22, modifié 1 fois.
La b!te et le couteau sont bien souvent les meilleurs outils...mais aussi et surtout les seuls qui sont toujours à disposition!!

Eléphanteau du PHP | 36 Messages

26 mai 2014, 14:22

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.