Les sessions php

Bonjour, je dois développer une zone membre d'un site, pour cela j'ai décidé de mettre en place des sessions php, seulement c'est la première fois que je fais cela et je ne sais pas par où commencer. Je déjà commencé à le développer mais je ne mis retrouve pas. Donc pour accéder à cette zone membre l'utilisateur doit s'identifiant via un formulaire s'il a un compte il est automatiquement redirigé vers une autre page où j'affiche un " Bonjour toto " mais au lieu d'afficher cela j'affiche "Bonjour " donc ma variable est vide, j'ai d'abord pensé que mon POST du formulaire précédent n'était pas bon mais après vérification le problème ne vient pas de là alors je pense que cela vient des sessions php mais comme c'est flou pour moi je ne sais pas où est l'erreur, donc je fais appelle à vous. merci de m'aider.

18 réponses

Résumé de la discussion

Utilisant des sessions PHP pour une zone membre, le problème est que l'affichage 'Bonjour toto' devient 'Bonjour', la variable étant vide. Des utilisateurs expliquent qu'il faut correctement récupérer les données via POST et que la valeur doit être stockée en session avec session_start(), le tout en haut des pages. La solution la plus partagée relève d'un déclenchement adéquat lors du clic sur le bouton de validation et de l'initialisation précoce de la session, plutôt qu'au moment du rendu. D'autres échanges abordent des erreurs de chemin de sauvegarde des sessions et des conseils pratiques comme créer le dossier 'sessions' et vérifier que l'envoi des entêtes ne précède pas session_start().

Bobot (l’IA à votre service)
  1. Contributeur
    Bonjour,

    Montre nous ton code?
    0
    1. Ok voici je code de la page d'authentification :

      <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
      <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr">
      <head>
      <title>S'identifier</title>

      <link href="plan.css" rel="stylesheet" type="text/css">
      </head> <STYLE type="text/css"> </STYLE>
      <body bgcolor="#ffffaa" class=cor>
      <div class="cor3 largeur">

      <?php
      include ("connection.php");

      echo'<form method="POST"> <center><br>Votre pseudo est : <input type="text" name="id"><br><br>
      Votre mot de passe est : <input type="password" name="mdp"><br><br>
      <input type="hidden" name="id" value='.$_POST['id'].'>

      <input type="submit" name="bouton" value="Me connecter"></center>
      </form>';
      // <input type="hidden" name="mdp" value='.$_POST['mdp'].'>

      $_SESSION['pseudo'] = $_POST['id'];
      $_SESSION['mdp'] = $_POST['mdp']

      if(isset($_SESSION['pseudo']))
      {
      $user = $_SESSION['pseudo'];
      $mdp = $_SESSION['mdp'];
      }
      $requete = "SELECT * FROM quizz WHERE identifiant like ('".$user."') and mdp like ('".$mdp."')";
      $query = mysql_query($requete)or die(mysql_error());
      $nb = mysql_num_rows($query);
      if(($_SESSION['pseudo']) && ($_SESSION['mdp'])){
      if($nb == 0) echo'<center><b><br>Identifiant et/ou mot de passe icorrect</b></center>';
      }
      while ($data = mysql_fetch_array($query)){
      define("USER", $_POST['id']);
      define("PASS", $_POST['mdp']);

      if(isset($_SESSION['pseudo']) && isset($_SESSION['mdp']))
      {
      $user = $_SESSION['pseudo'];
      $pass = $_SESSION['mdp'];
      if($user == USER && $pass == PASS)
      {
      $_SESSION['pseudo'] = USER;

      echo "<script language=\"JavaScript\">";
      echo "top.location.replace ('index2.html') ;";
      echo "</script>";
      }
      else
      {
      echo'<center> <b>Identifiant ou mot de passe incorrect !</b></center>';
      }

      }
      }
      ?>
      </body>
      </html>

      et voici la deuxième page :

      <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
      <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr">
      <head>
      <title>Acceuil</title>
      <meta http-equiv="content-type" content="text/html; charset=iso-8859-1">
      <meta name="generator" content="HAPedit 2.6">
      <link href="plan.css" rel="stylesheet" type="text/css">
      </head>
      <body bgcolor="#ffffaa" id=top0 style="" class=cor>
      <?php

      include ('connection.php');
      $id = $_POST['id'];
      $mdp = $_SESSION['mdp'];
      ?><div class="cor3 largeur">
      <?php
      $requete = "SELECT nb_hab,sup FROM pays";
      $query = mysql_query($requete) or (mysql_error());

      while($tableau = mysql_fetch_array($query)){

      $nombrehab = str_replace(" ", "", $tableau['nb_hab']);
      $nombre = intval($nombrehab);
      $nombretotal = $nombretotal + $nombre;

      $sup = str_replace(" ", "", $tableau['sup']);
      $superficie = intval($sup);
      $superficietotal = $superficietotal + $superficie;

      }
      //nombre d'habitant au total
      //floor() supprime les chiffres après la virgule sans faire d'arrondi
      $miliard = Floor($nombretotal/1000000000);
      $million = Floor($nombretotal/1000000);
      $mille = Floor($nombretotal/1000);
      $cent = Floor($nombretotal);

      $million = str_replace($miliard, "", $million);

      $mille = str_replace($miliard, "", $mille);
      $mille = str_replace($million, "", $mille);

      $cent = str_replace($miliard, "", $cent);
      $cent = str_replace($million, "", $cent);
      $cent = str_replace($mille, "", $cent);

      //superficie total
      $superficie1 = Floor($superficietotal/1000000);
      $superficie2 = Floor($superficietotal/1000);
      $superficie3 = Floor($superficietotal);

      $millesup = str_replace($superficie1, "", $superficie2);

      $centsup = str_replace($superficie1, "", $superficie3);
      $centsup = str_replace($superficie2, "", $superficie3);

      //rapport nb_hab/km²
      $rapport = $nombretotal / $superficietotal;
      $rapport = round($rapport, 2);

      //nombre de pays
      $requete = "SELECT nom_pays FROM pays";
      $query = mysql_query($requete) or die(mysql_error());
      $nb = mysql_num_rows($query);

      //nombre de pays en Afrique
      $requeteaf = "SELECT * FROM pays WHERE continent LIKE 'Afrique'";
      $queryaf = mysql_query($requeteaf) or die(mysql_error());
      $nbaf = mysql_num_rows($queryaf);
      //nombre de pays en Asie
      $requeteas = "SELECT * FROM pays WHERE continent LIKE 'Asie'";
      $queryas = mysql_query($requeteas) or die(mysql_error());
      $nbas = mysql_num_rows($queryas);
      //nombre de pays en Amerique
      $requeteam = "SELECT * FROM pays WHERE continent LIKE 'Amerique'";
      $queryam = mysql_query($requeteam) or die(mysql_error());
      $nbam = mysql_num_rows($queryam);
      //nombre de pays en Europe
      $requetee = "SELECT * FROM pays WHERE continent LIKE 'Europe'";
      $querye = mysql_query($requetee) or die(mysql_error());
      $nbe = mysql_num_rows($querye);
      //nombre de pays en Océanie
      $requeteo = "SELECT * FROM pays WHERE continent LIKE 'Oceanie'";
      $queryo = mysql_query($requeteo) or die(mysql_error());
      $nbo = mysql_num_rows($queryo);

      while($tableauaf = mysql_fetch_array($queryaf)){

      $nombrehabaf = str_replace(" ", "", $tableauaf['nb_hab']);
      $nombrehabitantaf = intval($nombrehabaf);
      $nombretotalaf = $nombretotalaf + $nombrehabitantaf;
      /*
      if($nombrehabitantaf > $payspluspeuple){
      $payspluspeuple = $nombrehabitantaf;
      $payspluspeuple2 = (string) $payspluspeuple ;
      } */
      $sup = str_replace(" ", "", $tableauaf['sup']);
      $superficie = intval($sup);
      $suptotalaf = $suptotalaf + $superficie;
      }
      //rapport nb_hab/km²
      $rapportafrique = $nombretotalaf / $suptotalaf;
      $rapportafrique = round($rapportafrique, 2);
      //nombre d'habitant en Afrique
      $miliardaf = Floor($nombretotalaf/1000000000);
      $millionaf = Floor($nombretotalaf/1000000);
      $milleaf = Floor($nombretotalaf/1000);
      $centaf = Floor($nombretotalaf);

      $millionaf = str_replace($miliardaf, "", $millionaf);

      $milleaf = str_replace($miliardaf, "", $milleaf);
      $milleaf = str_replace($millionaf, "", $milleaf);

      $centaf = str_replace($miliardaf, "", $centaf);
      $centaf = str_replace($millionaf, "", $centaf);
      $centaf = str_replace($milleaf, "", $centaf);

      //superficie Afrique
      $millionsupaf = Floor($suptotalaf/1000000);
      $millesupaf = Floor($suptotalaf/1000);
      $centsupaf = Floor($suptotalaf);

      $millesupaf = str_replace($millionsupaf, "", $millesupaf);

      $centsupaf = str_replace($millionsupaf, "", $centsupaf);
      $centsupaf = str_replace($millesupaf, "", $centsupaf);
      //fin afrique
      while($tableauas = mysql_fetch_array($queryas)){

      $nombrehabas = str_replace(" ", "", $tableauas['nb_hab']);
      $nombrehabitantas = intval($nombrehabas);
      $nombretotalas = $nombretotalas + $nombrehabitantas;

      $sup = str_replace(" ", "", $tableauas['sup']);
      $superficie = intval($sup);
      $suptotalas = $suptotalas + $superficie;
      }
      //rapport nb_hab/km²
      $rapportasie = $nombretotalas / $suptotalas;
      $rapportasie = round($rapportasie, 2);
      //nombre d'habitant en Asie
      $miliardas = Floor($nombretotalas/1000000000);
      $millionas = Floor($nombretotalas/1000000);
      $milleas = Floor($nombretotalas/1000);
      $centas = Floor($nombretotalas);

      $millionas = str_replace($miliardas, "", $millionas);

      $milleas = str_replace($miliardas, "", $milleas);
      $milleas = str_replace($millionas, "", $milleas);

      $centas = str_replace($miliardas, "", $centas);
      $centas = str_replace($millionas, "", $centas);
      $centas = str_replace($milleas, "", $centas);

      //superficie Asie
      $millionsupas = Floor($suptotalas/1000000);
      $millesupas = Floor($suptotalas/1000);
      $centsupas = Floor($suptotalas);

      $millesupas = str_replace($millionsupas, "", $millesupas);

      $centsupas = str_replace($millionsupas, "", $centsupas);
      $centsupas = str_replace($millesupas, "", $centsupas);
      //fin asie
      while($tableauam = mysql_fetch_array($queryam)){

      $nombrehabam = str_replace(" ", "", $tableauam['nb_hab']);
      $nombrehabitantam = intval($nombrehabam);
      $nombretotalam = $nombretotalam + $nombrehabitantam;

      $sup = str_replace(" ", "", $tableauam['sup']);
      $superficie = intval($sup);
      $suptotalam = $suptotalam + $superficie;
      }
      //rapport nb_hab/km²
      $rapportamerique = $nombretotalam / $suptotalam;
      $rapportamerique = round($rapportamerique, 2);
      //nombre d'habitant en Amérique
      $millionam = Floor($nombretotalam/1000000);
      $milleam = Floor($nombretotalam/1000);
      $centam = Floor($nombretotalam);

      $millionam = str_replace($miliardam, "", $millionam);

      $milleam = str_replace($millionam, "", $milleam);

      $centam = str_replace($millionam, "", $centam);
      $centam = str_replace($milleam, "", $centam);

      //superficie Amérique
      $millionsupam = Floor($suptotalam/1000000);
      $millesupam = Floor($suptotalam/1000);
      $centsupam = Floor($suptotalam);

      $millesupam = str_replace($millionsupam, "", $millesupam);

      $centsupam = str_replace($millionsupam, "", $centsupam);
      $centsupam = str_replace($millesupam, "", $centsupam);
      //fin amérique
      while($tableaue = mysql_fetch_array($querye)){

      $nombrehabe = str_replace(" ", "", $tableaue['nb_hab']);
      $nombrehabitante = intval($nombrehabe);
      $nombretotale = $nombretotale + $nombrehabitante;

      $sup = str_replace(" ", "", $tableaue['sup']);
      $superficie = intval($sup);
      $suptotale = $suptotale + $superficie;
      }
      //rapport nb_hab/km²
      $rapporteurope = $nombretotale / $suptotale;
      $rapporteurope = round($rapporteurope, 2);
      //nombre d'habitant en Europe
      $miliarde = Floor($nombretotale/1000000000);
      $millione = Floor($nombretotale/1000000);
      $millee = Floor($nombretotale/1000);
      $cente = Floor($nombretotale);

      $millione = str_replace($miliarde, "", $millione);

      $millee = str_replace($miliarde, "", $millee);
      $millee = str_replace($millione, "", $millee);

      $cente = str_replace($miliarde, "", $cente);
      $cente = str_replace($millione, "", $cente);
      $cente = str_replace($millee, "", $cente);

      //superficie Europe
      $millionsupe = Floor($suptotale/1000000);
      $millesupe = Floor($suptotale/1000);
      $centsupe = Floor($suptotale);

      $millesupe = str_replace($millionsupe, "", $millesupe);

      $centsupe = str_replace($millionsupe, "", $centsupe);
      $centsupe = str_replace($millesupe, "", $centsupe);
      //fin europe
      while($tableauo = mysql_fetch_array($queryo)){

      $nombrehabo = str_replace(" ", "", $tableauo['nb_hab']);
      $nombrehabitanto = intval($nombrehabo);
      $nombretotalo = $nombretotalo + $nombrehabitanto;

      $sup = str_replace(" ", "", $tableauo['sup']);
      $superficie = intval($sup);
      $suptotalo = $suptotalo + $superficie;
      }
      //rapport nb_hab/km²
      $rapportoceanie = $nombretotalo / $suptotalo;
      $rapportoceanie = round($rapportoceanie, 2);
      //nombre d'habitant en Europe
      $miliardo = Floor($nombretotalo/1000000000);
      $milliono = Floor($nombretotalo/1000000);
      $milleo = Floor($nombretotalo/1000);
      $cento = Floor($nombretotalo);

      $milliono = str_replace($miliardo, "", $milliono);

      $milleo = str_replace($miliardo, "", $milleo);
      $milleo = str_replace($milliono, "", $milleo);

      $cento = str_replace($miliardo, "", $cento);
      $cento = str_replace($milliono, "", $cento);
      $cento = str_replace($milleo, "", $cento);

      //superficie Europe
      $millionsupo = Floor($suptotalo/1000000);
      $millesupo = Floor($suptotalo/1000);
      $centsupo = Floor($suptotalo);

      $millesupo = str_replace($millionsupo, "", $millesupo);

      $centsupo = str_replace($millionsupo, "", $centsupo);
      $centsupo = str_replace($millesupo, "", $centsupo);
      /*
      $requeteafrique = "SELECT * FROM pays WHERE nb_hab LIKE '".$payspluspeuple2."'";
      $requete2 = mysql_query($requeteafrique) or die(mysqlerror());
      $tableauafrique = mysql_fetch_array($requete2);
      <b>Pays le plus peulé du continent :</b> '.$tableauafrique['nom_pays'].' avec '.$payspluspeuple.' habitants
      */
      $requete = "SELECT * FROM pays WHERE independant LIKE 'non'";
      $requete2 = mysql_query($requete) or die(mysqlerror());
      $nb_non_ind = mysql_num_rows($requete2);

      echo'<p><center><div class="pps">
      Bonjour '.$id.', merci de vous êtes connecté.<br><br>
      <b>Voici quelques informations intéressantes :</b><br></div></center>
      <div class="pps">
      <b>Nombres d\'habitants total :</b> '.$miliard.' '.$million.' '.$mille.' '.$cent.'<br>
      <b>Superficie totale des terres habitables émergées :</b> '.$superficie1.' '.$millesup.' '.$centsup.' km²<br>
      <b>Rapport :</b> '.$rapport.' habitants / km²</div>
      <div class="pps">
      <b>Nombres de continents : </b>5<br>
      <b>Nombres de pays :</b> '.$nb.' dont '.$nb_non_ind.' ne sont pas reconnus comme indépendants<br></div>
      <div class="pps">
      <center><b>Afrique</b></center>
      <b>Superficie total du continent :</b> '.$millionsupaf.' '.$millesupaf.' '.$centsupaf.' km²<br>
      <b>Nombres d\'habitants :</b> '.$miliardaf.' '.$millionaf.' 1'.$milleaf.' 1'.$centaf.'<br>
      <b>Rapport :</b> '.$rapportafrique.' habitants / km² <br>
      <b>Nombres de pays :</b> '.$nbaf.'<br>
      <b>Littoraux :</b> Océan Atlantique, Océan Indien et Mer Méditerranée
      </div>
      <div class="pps">
      <center><b>Asie</b></center>
      <b>Superficie total du continent :</b> '.$millionsupas.' '.$millesupas.' '.$centsupas.' km²<br>
      <b>Nombres d\'habitants :</b> '.$miliardas.' '.$millionas.' '.$milleas.' '.$centas.'<br>
      <b>Rapport :</b> '.$rapportasie.' habitants / km² <br>
      <b>Nombres de pays :</b> '.$nbas.'<br>
      <b>Littoraux :</b> Océan Pacifique et Océan Indien
      </div>
      <div class="pps">
      <center><b>Amérique</b></center>
      <b>Superficie total du continent :</b> '.$millionsupam.' '.$millesupam.' '.$centsupam.' km²<br>
      <b>Nombres d\'habitants :</b> '.$millionam.' '.$milleam.' '.$centam.'<br>
      <b>Rapport :</b> '.$rapportamerique.' habitants / km² <br>
      <b>Nombres de pays :</b> '.$nbam.'<br>
      <b>Littoraux :</b> Océan Pacifique et Océan Atlantique
      </div>
      <div class="pps">
      <center><b>Europe</b></center>
      <b>Superficie total du continent :</b> '.$millionsupe.' '.$millesupe.' '.$centsupe.' km²<br>
      <b>Nombres d\'habitants :</b> '.$millione.' '.$millee.' '.$cente.'<br>
      <b>Rapport :</b> '.$rapporteurope.' habitants / km² <br>
      <b>Nombres de pays :</b> '.$nbe.'<br>
      <b>Littoraux :</b> Océan Atlantique et Mer Méditerranée
      </div>
      <div class="pps">
      <center><b>Océanie</b></center>
      <b>Superficie total du continent :</b> '.$millionsupo.' '.$millesupo.' '.$centsupo.' km²<br>
      <b>Nombres d\'habitants :</b> '.$milliono.' '.$milleo.' '.$cento.'<br>
      <b>Rapport :</b> '.$rapportoceanie.' habitants / km² <br>
      <b>Nombres de pays :</b> '.$nbo.'<br>
      <b>Littoraux :</b> Océan Indien et Océan Pacifique
      </div>
      </p>';
      ?>
      </div>
      </body>
      </html>
      0
      1. Contributeur
        Ajoute
        <?php session_start(); ?>

        au début de tes pages, avant tout code html.
        0
        1. Ok voici ce que j'ai rajouté au début de ma page :

          <?php
          // On démarre la session AVANT d'écrire du code HTML
          session_start();

          $_SESSION['pseudo'] = $_POST['id'];
          ?>

          mais rien n'a changé
          0
          1. Contributeur
            Mais ça à la place pour voir. Il t'affiche quoi?
            <?php
            // On démarre la session AVANT d'écrire du code HTML
            session_start();
            echo "1";
            echo $_POST['id'];
            echo "2";
            $_SESSION['pseudo'] = $_POST['id'];
            echo "3";
            echo $_SESSION['pseudo'];
            echo "4";
            ?> 
            0
        2. Je mets ça dans que page? Celle de connexion ou dans la page de redirection?
          0
          1. Contributeur
            Dans la seconde, c'est censé utiliser le POST récupéré de la première, et le stocker dans la variable SESSION.
            Avec des affichages intermédiaires pour vérifier le bon déroulement de l'opération.
            0
        3. J'ai des erreurs :

          Warning: session_start() [function.session-start]: open(/mnt/104/sdb/b/4/mickael.bernaudeau/sessions/sess_9a563f4961c07c340503175213684a30, O_RDWR) failed: No such file or directory (2) in /mnt/104/sdb/b/4/mickael.bernaudeau/acceuil2.php on line 3

          Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at /mnt/104/sdb/b/4/mickael.bernaudeau/acceuil2.php:3) in /mnt/104/sdb/b/4/mickael.bernaudeau/acceuil2.php on line 3

          Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /mnt/104/sdb/b/4/mickael.bernaudeau/acceuil2.php:3) in /mnt/104/sdb/b/4/mickael.bernaudeau/acceuil2.php on line 3
          1234

          Warning: Unknown(): open(/mnt/104/sdb/b/4/mickael.bernaudeau/sessions/sess_9a563f4961c07c340503175213684a30, O_RDWR) failed: No such file or directory (2) in Unknown on line 0

          Warning: Unknown(): Failed to write session data (files). Please verify that the current setting of session.save_path is correct (/mnt/104/sdb/b/4/mickael.bernaudeau/sessions) in Unknown on line 0
          0
        4. Ok donc j'ai créé le dossier sessions et je n'ai plus d'erreur, cependant j'ai toujours rien d'afficher, ou plutôt j'ai "Bonjour " au lieu de 'Bonjour toto". De plus, il mets affiché 1234 comme attendu
          0
          1. Contributeur
            Tu as utilisé ton formulaire?
            Parce que là, le problème ne vient pas des sessions, mais de ta variable $_POST qui n'arrive pas.
            0
        5. ok mais je ne vois pas où peut-être l'erreur
          0
          1. Veux-tu que je reposte mes lignes de codes?
            0
            1. Je ne vois pas où est mon erreur voici mon formulaire :

              echo'<form method="POST"> <center><br>Votre pseudo est : <input type="text" name="id"><br><br>
              Votre mot de passe est : <input type="text" name="mdp"><br><br>
              <input type="hidden" name="id2" value='.$_POST['id'].'>
              <input type="submit" name="bouton" value="Me connecter"></center>
              </form>';
              0
              1. Contributeur
                Hop hop hop, je viens de voir...

                T'as pas compris comment marche un formulaire :)
                Ta balise <form> doit avoir un paramètre "action":
                <form method="POST" action="cible.php">

                Ensuite, tu ne peux pas mettre de code PHP dans du HTML, ce code ci est donc faux:
                <input type="hidden" name="id2" value='.$_POST['id'].'>

                De plus on a pour habitude de mettre les mots de passe en champ "password".

                En fait, les codes respectifs de tes deux pages doivent ressembler à ça:
                --appel.html--
                <form method="POST" action="cible.php"> 
                Votre pseudo est : <input type="text" name="id"><br> 
                Votre mot de passe est : <input type="password" name="mdp"><br>
                <input type="submit" name="bouton" value="Me connecter">
                </form>
                
                --cible.php--
                <?php
                echo $_POST['id'];
                echo "<br>";
                echo $_POST['mdp"];
                ?>


                Regarde bien cette page, et essaie de tout comprendre:
                https://openclassrooms.com/fr/courses/918836-concevez-votre-site-web-avec-php-et-mysql/913099-transmettez-des-donnees-avec-les-formulaires
                0
                1. Pour la première erreur que tu as vu , d'accord mais ce que je souhaite faire c'est juste après que l'utilisateur clique sur le bouton, "Me connecter", tester ce qu'il inscrit dans les zones de saisies de textes. Voir si le login et le mdp correspondent et sont existant dans ma bdd. Si c'est ok il passe à la page suivante sinon je lui signale l'erreur. Or, sauf erreur de ma part, si je mets "action=cible.php" je passe directement à la page suivante?

                  Et pour la seconde erreur, le password était mis mais je l'ai enlevé pour un teste et j'ai oublié de le remettre :)

                  De plus, je viens de rajouter à mon formulaire action=mapage.php, et ça fait ramer ma page et il ne m'affiche plus rien
                  0
                  1. Contributeur
                    Non, tu n'as pas compris vraiment comment fonctionne le PHP.
                    Il est exécuté sur le serveur, tandis que le HTML est exécuté par le client. Et ta base de donnée est... sur le serveur.

                    En fait, tu dois faire ton formulaire sur une page 1. Tu mets "action=2.php". Quand tu cliques sur envoyer, les données qui sont sur le client deviennent des $_POST lors du traitement de 2.php. C'est là que tu fait tes vérifs, et si jamais c'est OK, tu renvoie vers une autre page 3.php qui affiche que c'est ok.
                    La page "action.php" est en fait une page de traitement des données, pas obligatoirement une page d'affichage. Elle peut bien sur afficher avec un code comme ça:
                    if $ok
                    {
                    echo "Connecté";
                    }
                    else
                    {
                    echo "erreur";
                    }


                    Tu ne peux pas traiter les données et vérifier une fois que la page est affichée, puisqu'elle est sur l'ordinateur du client, et que le code PHP est exécuté sur le serveur, que ta base de donnée est sur le serveur, et que tout ce qui se passe du coté du client n'est pas contrôlable par le serveur.
                    0
                2. D'accord, par contre comment ça se fait que ma page rame et n'affiche plus rien?
                  0
                  1. Contributeur
                    Redonne les codes complet de tes deux pages =)
                    0
                3. ok donc voici je code de la page d'authentification :

                  <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 
                  <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr"> 
                  <head> 
                  <title>S'identifier</title> 
                  
                  <link href="plan.css" rel="stylesheet" type="text/css"> 
                  </head>  <STYLE type="text/css">         </STYLE> 
                  <body bgcolor="#ffffaa" class=cor> 
                  <div class="cor3 largeur"> 
                  
                  <?php 
                  include ("connection.php"); 
                  
                  echo'<form method="POST" action="acceuil2.html"> <center><br>Votre pseudo est : <input type="text" name="id"><br><br> 
                       Votre mot de passe est : <input type="text" name="mdp"><br><br> 
                       <input type="submit" name="bouton" value="Me connecter"></center> 
                       </form>'; 
                           // <input type="hidden" name="mdp" value='.$_POST['mdp'].'> 
                  
                  $_SESSION['pseudo'] = $_POST['id']; 
                  $_SESSION['mdp']   = $_POST['mdp']; 
                  
                  if(isset($_SESSION['pseudo'])) 
                      { 
                       $user = $_SESSION['pseudo']; 
                       $mdp = $_SESSION['mdp']; 
                      } 
                  $requete = "SELECT * FROM quizz WHERE identifiant like ('".$user."') and mdp like ('".$mdp."')"; 
                  $query = mysql_query($requete)or die(mysql_error()); 
                  $nb = mysql_num_rows($query); 
                  if(($_SESSION['pseudo']) && ($_SESSION['mdp'])){ 
                    if($nb == 0) echo'<center><b><br>Identifiant et/ou mot de passe icorrect</b></center>'; 
                  } 
                  while ($data = mysql_fetch_array($query)){ 
                  define("USER", $_POST['id']); 
                  define("PASS", $_POST['mdp']); 
                  
                          if(isset($_SESSION['pseudo']) && isset($_SESSION['mdp'])) 
                              { 
                                  $user = $_SESSION['pseudo']; 
                                  $pass = $_SESSION['mdp']; 
                                  if($user == USER && $pass == PASS) 
                                      { 
                                          $_SESSION['pseudo'] = USER; 
                                          
                                               echo "<script language=\"JavaScript\">"; 
                                               echo "top.location.replace ('index2.html') ;"; 
                                               echo "</script>"; 
                                      } 
                                  else 
                                      { 
                                          echo'<center> <b>Identifiant ou mot de passe incorrect !</b></center>'; 
                                      } 
                                  
                              } 
                  } 
                  ?> 
                  </body> 
                  </html>


                  et la page après la connexion :

                  <?php 
                  // On démarre la session AVANT d'écrire du code HTML 
                  session_start(); 
                  echo "1"; 
                  echo $_POST['id2']; 
                  echo "2"; 
                  $_SESSION['pseudo'] = $_POST['id2']; 
                  echo "3"; 
                  echo $_SESSION['pseudo']; 
                  echo "4"; 
                  ?> 
                  <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 
                  <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr"> 
                  <head> 
                  <title>Acceuil</title> 
                  <meta http-equiv="content-type" content="text/html; charset=iso-8859-1"> 
                  <meta name="generator" content="HAPedit 2.6"> 
                  <link href="plan.css" rel="stylesheet" type="text/css"> 
                  </head> 
                  <body bgcolor="#ffffaa" id=top0 style="" class=cor> 
                  <?php 
                  
                  include ('connection.php'); 
                  $id = $_SESSION['pseudo']; 
                  $mdp = $_SESSION['mdp']; 
                  ?><div class="cor3 largeur"> 
                  <?php 
                  $requete = "SELECT nb_hab,sup FROM pays"; 
                  $query = mysql_query($requete) or (mysql_error()); 
                  
                  while($tableau = mysql_fetch_array($query)){ 
                  
                  $nombrehab = str_replace(" ", "", $tableau['nb_hab']); 
                  $nombre = intval($nombrehab); 
                  $nombretotal = $nombretotal + $nombre; 
                  
                  $sup = str_replace(" ", "", $tableau['sup']); 
                  $superficie = intval($sup); 
                  $superficietotal = $superficietotal + $superficie; 
                  
                  } 
                  //nombre d'habitant au total 
                  //floor() supprime les chiffres après la virgule sans faire d'arrondi 
                  $miliard = Floor($nombretotal/1000000000); 
                  $million = Floor($nombretotal/1000000); 
                  $mille = Floor($nombretotal/1000); 
                  $cent = Floor($nombretotal); 
                  
                  $million = str_replace($miliard, "", $million); 
                  
                  $mille = str_replace($miliard, "", $mille); 
                  $mille = str_replace($million, "", $mille); 
                      
                  $cent = str_replace($miliard, "", $cent); 
                  $cent = str_replace($million, "", $cent); 
                  $cent = str_replace($mille, "", $cent); 
                  
                  //superficie total 
                  $superficie1 = Floor($superficietotal/1000000); 
                  $superficie2 = Floor($superficietotal/1000); 
                  $superficie3 = Floor($superficietotal); 
                  
                  $millesup = str_replace($superficie1, "", $superficie2); 
                      
                  $centsup = str_replace($superficie1, "", $superficie3); 
                  $centsup = str_replace($superficie2, "", $superficie3); 
                  
                  //rapport nb_hab/km² 
                  $rapport = $nombretotal / $superficietotal; 
                  $rapport = round($rapport, 2); 
                  
                  //nombre de pays 
                  $requete = "SELECT nom_pays FROM pays"; 
                  $query = mysql_query($requete) or die(mysql_error()); 
                  $nb = mysql_num_rows($query); 
                  
                  //nombre de pays en Afrique 
                  $requeteaf = "SELECT * FROM pays WHERE continent LIKE 'Afrique'"; 
                  $queryaf = mysql_query($requeteaf) or die(mysql_error()); 
                  $nbaf = mysql_num_rows($queryaf); 
                  //nombre de pays en Asie 
                  $requeteas = "SELECT * FROM pays WHERE continent LIKE 'Asie'"; 
                  $queryas = mysql_query($requeteas) or die(mysql_error()); 
                  $nbas = mysql_num_rows($queryas); 
                  //nombre de pays en Amerique 
                  $requeteam = "SELECT * FROM pays WHERE continent LIKE 'Amerique'"; 
                  $queryam = mysql_query($requeteam) or die(mysql_error()); 
                  $nbam = mysql_num_rows($queryam); 
                  //nombre de pays en Europe 
                  $requetee = "SELECT * FROM pays WHERE continent LIKE 'Europe'"; 
                  $querye = mysql_query($requetee) or die(mysql_error()); 
                  $nbe = mysql_num_rows($querye); 
                  //nombre de pays en Océanie 
                  $requeteo = "SELECT * FROM pays WHERE continent LIKE 'Oceanie'"; 
                  $queryo = mysql_query($requeteo) or die(mysql_error()); 
                  $nbo = mysql_num_rows($queryo); 
                  
                  while($tableauaf = mysql_fetch_array($queryaf)){ 
                  
                  $nombrehabaf = str_replace(" ", "", $tableauaf['nb_hab']); 
                  $nombrehabitantaf = intval($nombrehabaf); 
                  $nombretotalaf = $nombretotalaf + $nombrehabitantaf; 
                  /* 
                  if($nombrehabitantaf > $payspluspeuple){ 
                   $payspluspeuple = $nombrehabitantaf; 
                   $payspluspeuple2 = (string) $payspluspeuple ; 
                  } */ 
                  $sup = str_replace(" ", "", $tableauaf['sup']); 
                  $superficie = intval($sup); 
                  $suptotalaf = $suptotalaf + $superficie; 
                  } 
                  //rapport nb_hab/km² 
                  $rapportafrique = $nombretotalaf / $suptotalaf; 
                  $rapportafrique = round($rapportafrique, 2); 
                  //nombre d'habitant en Afrique 
                  $miliardaf = Floor($nombretotalaf/1000000000); 
                  $millionaf = Floor($nombretotalaf/1000000); 
                  $milleaf = Floor($nombretotalaf/1000); 
                  $centaf = Floor($nombretotalaf); 
                  
                  $millionaf = str_replace($miliardaf, "", $millionaf); 
                  
                  $milleaf = str_replace($miliardaf, "", $milleaf); 
                  $milleaf = str_replace($millionaf, "", $milleaf); 
                      
                  $centaf = str_replace($miliardaf, "", $centaf); 
                  $centaf = str_replace($millionaf, "", $centaf); 
                  $centaf = str_replace($milleaf, "", $centaf); 
                  
                  //superficie Afrique 
                  $millionsupaf = Floor($suptotalaf/1000000); 
                  $millesupaf = Floor($suptotalaf/1000); 
                  $centsupaf = Floor($suptotalaf); 
                  
                  $millesupaf = str_replace($millionsupaf, "", $millesupaf); 
                      
                  $centsupaf = str_replace($millionsupaf, "", $centsupaf); 
                  $centsupaf = str_replace($millesupaf, "", $centsupaf); 
                  //fin afrique 
                  while($tableauas = mysql_fetch_array($queryas)){ 
                  
                  $nombrehabas = str_replace(" ", "", $tableauas['nb_hab']); 
                  $nombrehabitantas = intval($nombrehabas); 
                  $nombretotalas = $nombretotalas + $nombrehabitantas; 
                  
                  $sup = str_replace(" ", "", $tableauas['sup']); 
                  $superficie = intval($sup); 
                  $suptotalas = $suptotalas + $superficie; 
                  } 
                  //rapport nb_hab/km² 
                  $rapportasie = $nombretotalas / $suptotalas; 
                  $rapportasie = round($rapportasie, 2); 
                  //nombre d'habitant en Asie 
                  $miliardas = Floor($nombretotalas/1000000000); 
                  $millionas = Floor($nombretotalas/1000000); 
                  $milleas = Floor($nombretotalas/1000); 
                  $centas = Floor($nombretotalas); 
                  
                  $millionas = str_replace($miliardas, "", $millionas); 
                  
                  $milleas = str_replace($miliardas, "", $milleas); 
                  $milleas = str_replace($millionas, "", $milleas); 
                      
                  $centas = str_replace($miliardas, "", $centas); 
                  $centas = str_replace($millionas, "", $centas); 
                  $centas = str_replace($milleas, "", $centas); 
                  
                  //superficie Asie 
                  $millionsupas = Floor($suptotalas/1000000); 
                  $millesupas = Floor($suptotalas/1000); 
                  $centsupas = Floor($suptotalas); 
                  
                  $millesupas = str_replace($millionsupas, "", $millesupas); 
                      
                  $centsupas = str_replace($millionsupas, "", $centsupas); 
                  $centsupas = str_replace($millesupas, "", $centsupas); 
                  //fin asie 
                  while($tableauam = mysql_fetch_array($queryam)){ 
                  
                  $nombrehabam = str_replace(" ", "", $tableauam['nb_hab']); 
                  $nombrehabitantam = intval($nombrehabam); 
                  $nombretotalam = $nombretotalam + $nombrehabitantam; 
                  
                  $sup = str_replace(" ", "", $tableauam['sup']); 
                  $superficie = intval($sup); 
                  $suptotalam = $suptotalam + $superficie; 
                  } 
                  //rapport nb_hab/km² 
                  $rapportamerique = $nombretotalam / $suptotalam; 
                  $rapportamerique = round($rapportamerique, 2); 
                  //nombre d'habitant en Amérique 
                  $millionam = Floor($nombretotalam/1000000); 
                  $milleam = Floor($nombretotalam/1000); 
                  $centam = Floor($nombretotalam); 
                  
                  $millionam = str_replace($miliardam, "", $millionam); 
                  
                  $milleam = str_replace($millionam, "", $milleam); 
                      
                  $centam = str_replace($millionam, "", $centam); 
                  $centam = str_replace($milleam, "", $centam); 
                  
                  //superficie Amérique 
                  $millionsupam = Floor($suptotalam/1000000); 
                  $millesupam = Floor($suptotalam/1000); 
                  $centsupam = Floor($suptotalam); 
                  
                  $millesupam = str_replace($millionsupam, "", $millesupam); 
                      
                  $centsupam = str_replace($millionsupam, "", $centsupam); 
                  $centsupam = str_replace($millesupam, "", $centsupam); 
                  //fin amérique 
                  while($tableaue = mysql_fetch_array($querye)){ 
                  
                  $nombrehabe = str_replace(" ", "", $tableaue['nb_hab']); 
                  $nombrehabitante = intval($nombrehabe); 
                  $nombretotale = $nombretotale + $nombrehabitante; 
                  
                  $sup = str_replace(" ", "", $tableaue['sup']); 
                  $superficie = intval($sup); 
                  $suptotale = $suptotale + $superficie; 
                  } 
                  //rapport nb_hab/km² 
                  $rapporteurope = $nombretotale / $suptotale; 
                  $rapporteurope = round($rapporteurope, 2); 
                  //nombre d'habitant en Europe 
                  $miliarde = Floor($nombretotale/1000000000); 
                  $millione = Floor($nombretotale/1000000); 
                  $millee = Floor($nombretotale/1000); 
                  $cente = Floor($nombretotale); 
                  
                  $millione = str_replace($miliarde, "", $millione); 
                  
                  $millee = str_replace($miliarde, "", $millee); 
                  $millee = str_replace($millione, "", $millee); 
                      
                  $cente = str_replace($miliarde, "", $cente); 
                  $cente = str_replace($millione, "", $cente); 
                  $cente = str_replace($millee, "", $cente); 
                  
                  //superficie Europe 
                  $millionsupe = Floor($suptotale/1000000); 
                  $millesupe = Floor($suptotale/1000); 
                  $centsupe = Floor($suptotale); 
                  
                  $millesupe = str_replace($millionsupe, "", $millesupe); 
                      
                  $centsupe = str_replace($millionsupe, "", $centsupe); 
                  $centsupe = str_replace($millesupe, "", $centsupe); 
                  //fin europe 
                  while($tableauo = mysql_fetch_array($queryo)){ 
                  
                  $nombrehabo = str_replace(" ", "", $tableauo['nb_hab']); 
                  $nombrehabitanto = intval($nombrehabo); 
                  $nombretotalo = $nombretotalo + $nombrehabitanto; 
                  
                  $sup = str_replace(" ", "", $tableauo['sup']); 
                  $superficie = intval($sup); 
                  $suptotalo = $suptotalo + $superficie; 
                  } 
                  //rapport nb_hab/km² 
                  $rapportoceanie = $nombretotalo / $suptotalo; 
                  $rapportoceanie = round($rapportoceanie, 2); 
                  //nombre d'habitant en Europe 
                  $miliardo = Floor($nombretotalo/1000000000); 
                  $milliono = Floor($nombretotalo/1000000); 
                  $milleo = Floor($nombretotalo/1000); 
                  $cento = Floor($nombretotalo); 
                  
                  $milliono = str_replace($miliardo, "", $milliono); 
                  
                  $milleo = str_replace($miliardo, "", $milleo); 
                  $milleo = str_replace($milliono, "", $milleo); 
                      
                  $cento = str_replace($miliardo, "", $cento); 
                  $cento = str_replace($milliono, "", $cento); 
                  $cento = str_replace($milleo, "", $cento); 
                  
                  //superficie Europe 
                  $millionsupo = Floor($suptotalo/1000000); 
                  $millesupo = Floor($suptotalo/1000); 
                  $centsupo = Floor($suptotalo); 
                  
                  $millesupo = str_replace($millionsupo, "", $millesupo); 
                      
                  $centsupo = str_replace($millionsupo, "", $centsupo); 
                  $centsupo = str_replace($millesupo, "", $centsupo); 
                                                                      /* 
                  $requeteafrique = "SELECT * FROM pays WHERE nb_hab LIKE '".$payspluspeuple2."'"; 
                  $requete2 = mysql_query($requeteafrique) or die(mysqlerror()); 
                  $tableauafrique = mysql_fetch_array($requete2); 
                   <b>Pays le plus peulé du continent :</b> '.$tableauafrique['nom_pays'].' avec '.$payspluspeuple.' habitants 
                     */ 
                  $requete = "SELECT * FROM pays WHERE independant LIKE 'non'"; 
                  $requete2 = mysql_query($requete) or die(mysqlerror()); 
                  $nb_non_ind = mysql_num_rows($requete2); 
                  
                  echo'<p><center><div class="pps"> 
                       Bonjour '.$id.', merci de vous êtes connecté.<br><br> 
                       <b>Voici quelques informations intéressantes :</b><br></div></center> 
                       <div class="pps"> 
                       <b>Nombres d\'habitants total :</b> '.$miliard.' '.$million.' '.$mille.' '.$cent.'<br> 
                       <b>Superficie totale des terres habitables émergées :</b> '.$superficie1.' '.$millesup.' '.$centsup.' km²<br> 
                       <b>Rapport :</b> '.$rapport.' habitants / km²</div> 
                       <div class="pps"> 
                       <b>Nombres de continents : </b>5<br> 
                       <b>Nombres de pays :</b> '.$nb.' dont '.$nb_non_ind.' ne sont pas reconnus comme indépendants<br></div> 
                       <div class="pps"> 
                       <center><b>Afrique</b></center> 
                       <b>Superficie total du continent :</b> '.$millionsupaf.' '.$millesupaf.' '.$centsupaf.' km²<br> 
                       <b>Nombres d\'habitants :</b> '.$miliardaf.' '.$millionaf.' 1'.$milleaf.' 1'.$centaf.'<br> 
                       <b>Rapport :</b> '.$rapportafrique.' habitants / km² <br> 
                       <b>Nombres de pays :</b> '.$nbaf.'<br> 
                       <b>Littoraux :</b> Océan Atlantique, Océan Indien et Mer Méditerranée 
                       </div> 
                       <div class="pps"> 
                       <center><b>Asie</b></center> 
                       <b>Superficie total du continent :</b> '.$millionsupas.' '.$millesupas.' '.$centsupas.' km²<br> 
                       <b>Nombres d\'habitants :</b> '.$miliardas.' '.$millionas.' '.$milleas.' '.$centas.'<br> 
                       <b>Rapport :</b> '.$rapportasie.' habitants / km² <br> 
                       <b>Nombres de pays :</b> '.$nbas.'<br> 
                       <b>Littoraux :</b> Océan Pacifique et Océan Indien 
                       </div>                                          
                       <div class="pps"> 
                       <center><b>Amérique</b></center> 
                       <b>Superficie total du continent :</b> '.$millionsupam.' '.$millesupam.' '.$centsupam.' km²<br> 
                       <b>Nombres d\'habitants :</b> '.$millionam.' '.$milleam.' '.$centam.'<br> 
                       <b>Rapport :</b> '.$rapportamerique.' habitants / km² <br> 
                       <b>Nombres de pays :</b> '.$nbam.'<br> 
                       <b>Littoraux :</b> Océan Pacifique et Océan Atlantique 
                       </div>                                          
                       <div class="pps"> 
                       <center><b>Europe</b></center> 
                       <b>Superficie total du continent :</b> '.$millionsupe.' '.$millesupe.' '.$centsupe.' km²<br> 
                       <b>Nombres d\'habitants :</b> '.$millione.' '.$millee.' '.$cente.'<br> 
                       <b>Rapport :</b> '.$rapporteurope.' habitants / km² <br> 
                       <b>Nombres de pays :</b> '.$nbe.'<br> 
                       <b>Littoraux :</b> Océan Atlantique et Mer Méditerranée 
                       </div>                                          
                       <div class="pps"> 
                       <center><b>Océanie</b></center> 
                       <b>Superficie total du continent :</b> '.$millionsupo.' '.$millesupo.' '.$centsupo.' km²<br> 
                       <b>Nombres d\'habitants :</b> '.$milliono.' '.$milleo.' '.$cento.'<br> 
                       <b>Rapport :</b> '.$rapportoceanie.' habitants / km² <br> 
                       <b>Nombres de pays :</b> '.$nbo.'<br> 
                       <b>Littoraux :</b> Océan Indien et Océan Pacifique 
                       </div> 
                       </p>'; 
                  ?> 
                  </div> 
                  </body> 
                  </html>
                  0
                  1. Contributeur
                    Quand tu postes du code, utilise la balise "code" s'il te plait (le bouton <> au dessus du champ pour écrire le message), c'est plus lair, et ça conserve l'indentation :).

                    Mais uniquement ce code dans la page appelée:

                    <?php 
                    // On démarre la session AVANT d'écrire du code HTML 
                    session_start(); 
                    echo "1"; 
                    echo $_POST['id2']; 
                    echo "2"; 
                    $_SESSION['pseudo'] = $_POST['id2']; 
                    echo "3"; 
                    echo $_SESSION['pseudo']; 
                    echo "4"; 
                    ?> 

                    Live free, learn free, help free, Happy Hacking!
                    Plus que tout en informatique, l'erreur est humaine.
                    0
                    1. J'ai fais ce que tu ma dis, c'est à dire j'ai mis le code que tu m'as donné et mis tout le reste en commentaire dans la 2e page mais rien n'a changé ça rame toujours et n'affiche rien
                      0
                      1. Je précise que le site c'est mis a ramer quand j'ai rajouté le action=mapage.php à mon form
                        0
                      2. Contributeur
                        C'est en local sur ton ordinateur, ou disponible sur le net? Tu peux m'envoyer un lien vers ta page? (En MP si jamais tu préfères)
                        0
                    2. Donc j'ai résolu mon problème, il suffisait de détecter l'appui sur le bouton de validation dans la page suivante.

                      Maintenant ce que j'aimerai savoir c'est que si mon site est bien sécurisé donc j'aimerai pouvoir le tester mais je ne sais pas comment m'y prendre.

                      merci de votre aide
                      0