Partage
  • Partager sur Facebook
  • Partager sur Twitter

Premier TP de mateo

Sa méthode ou la mienne ?

    24 juin 2006 à 10:11:03

    Bonjour à tous !

    Je viens de finir le premier TP de mateo. En regardant le corrigé, j'ai vu que l'on avait pas du tout fait pareil.
    Ca serait cool si vous pouviez regarder mon code, et me dire si 1)c'est pas grave qu'il soit différent du sien ou 2)il y'a une grosse erreur de débutant.

    Merci !

    Alors le code de mateo est là

    <?php
    // J'ai choisi le mot de passe "kangourou"

    if (isset($_POST['mot_de_passe'])) // Si la variable existe
    {
        // On se crée une variable $mot_de_passe avec le mot de passe entré
        $mot_de_passe = $_POST['mot_de_passe'];
    }
    else // La variable n'existe pas encore
    {
        $mot_de_passe = ""; // On crée une variable $mot_de_passe vide
    }


    if ($mot_de_passe == "kangourou") // Si le mot de passe est bon
    {
    // On affiche la page cachée.
    ?>

    <!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" lang="fr">
        <head>
            <title>Codes d'accès au serveur central de la NASA</title>
            <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
        </head>
        <body>
            <h2>Voici les codes d'
    accès :</h2>
            <h3>CRD5-GTFT-CK65-JOPM-V29N-24G1-HH28-LLFV</h3>
           
            <hr />
           
            <p>
            Cette page est réservée au personnel de la NASA. N'oubliez pas de la visiter régulièrement car les codes d'accès sont changés toutes les semaines.<br />
            La NASA vous remercie de votre visite.
            </p>
        </body>
    </html>

    <?php
    }

    else // le mot de passe n'est pas bon
    {
    // On affiche la zone de texte pour rentrer le mot de passe.
    ?>

    <!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" lang="fr">
        <head>
            <title>Page protégée par mot de passe</title>
            <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
        </head>
        <body>
    <p>Veuillez entrer le mot de passe pour obtenir les codes d'accès au serveur central de la NASA :</p>
    <form action="protection.php" method="post">
    <p>
    <input type="text" name="mot_de_passe" /> <input type="submit" value="Valider" />
    </p>
    </form>
    <p>Cette page est réservée au personnel de la NASA. Si vous ne travaillez pas à la NASA, inutile d'
    insister vous ne trouverez jamais le mot de passe ! ;-)</p>
        </body>
    </html>

    <?php

    } // Fin du else

    // Fin du code :)
    ?>


    Et le mien est là, séparé en 2 fichiers. Le premier, index.php:


    <!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" lang="fr">
       
    <head>
    <title>Test Page</title>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    </head>
    <body>
    Pour accéder à la zone privée, tape le code secret <br/>
    <form action="ok.php" method="post">
    <p>
    <input type="text" name="pass" /> <input type="submit" value="OK" />
    </p>
    </form>
    </body>
    </html>


    Et le second fichier, ok.php:


    <!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" lang="fr">
       
    <head>
    <title>Test Page</title>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    </head>
       

    <body>
           
    <?php

    if ($_POST['pass'] == "topsecret")
    {
    echo "Bienvenue dans la zone membre !";
    }

    else
    {
    ?>

    Erreur d'authentification. Cliquez <a href="index.php"> ici </a> pour revenir en arrière

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


    Merci beaucoup !
    • Partager sur Facebook
    • Partager sur Twitter
      24 juin 2006 à 10:16:10

      C'est à peu près pareil, sauf qu'avec le code de mateo, lorsqu'un mauvais mdp est entré, ça réaffiche le formulaire, ce qui ne se produit pas chez toi :)
      Par contre, Mateo n'affiche pas de message d'erreur losqu'un mauvais mot de passe est entré, contrairement à toi ;)
      • Partager sur Facebook
      • Partager sur Twitter
        24 juin 2006 à 10:17:49

        Mais pour un site web, y'a pas une méthode plus efficace ou sécurisée que l'autre ?
        • Partager sur Facebook
        • Partager sur Twitter
          24 juin 2006 à 10:18:08

          Ton code est très bien, mais il manque un petit quelque chose.
          Tu utilises directement la variable $_POST['pass'], mais il faudrait commencer par tester si cette variable existe bien ;)

          if ( isset($_POST['pass']) && $_POST['pass'] == "topsecret")
          {
          echo "Bienvenue dans la zone membre !";
          }


          isset() permet de vérifier que la variable isset($_POST['pass'] existe. Si tu ne fais pas cette condition, et qu'un membre arrive directement sur ok.php sans passer par le formulaire, tu auras une erreur de type "notice" ;)


          PS : Par contre, utiliser directement les variables $_POST est très très bien.
          Mateo utilise une variable intermédiaire $mot_de_passe totalement inutile...
          • Partager sur Facebook
          • Partager sur Twitter
            24 juin 2006 à 10:43:06

            Ou même :


            if ( isset($_POST['pass']))  // test si la variable a été crée
            {
               if (!empty ($_POST['pass'] && $_POST['pass'] == "topsecret"))  // test si la variable n'es pas vide!
               {
            echo "Bienvenue dans la zone membre !";
               }
            }


            Je crois que j'ai bien expliquer dans le code ^^

            Sinon ta methode n'es pas plus mal, mais ce qui es mieux dans celle de matéo,c'est que c'est en une page ;)

            • Partager sur Facebook
            • Partager sur Twitter
              24 juin 2006 à 10:45:58

              kakulupia, ton code est répétitif...

              - isset() est directement inclu dans !empty().
              - Une variable ne peut être vide si elle est égale à "topsecret".

              Conclusion : le empty est totalement inutile ici, vu que le formulaire doit renvoyer une valeur précise.
              • Partager sur Facebook
              • Partager sur Twitter
                24 juin 2006 à 10:47:47

                Ha ouais ^^

                Dailleur je me demander, !empty revien au même que strlen($_POST['pass']) != 0 ou tout simplement $_POST['pass'] != '' ^^ ?

                lol ...
                • Partager sur Facebook
                • Partager sur Twitter
                  24 juin 2006 à 10:48:26

                  petit malin, moi je n'y étais pas arrivé lol ! :p

                  ce que tu peux faire c'est sur ta page ok.php remettre le formulaire qui revoit de nouveau à cette page, du coup ton code sera plus court que celui de m@théo :) Comme ça :

                  <!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" lang="fr">
                     
                  <head>
                  <title>Test Page</title>
                  <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
                  </head>
                     

                  <body>
                         
                  <?php

                  if ($_POST['pass'] == "topsecret")
                  {
                  echo "Bienvenue dans la zone membre !";
                  }

                  else
                  {
                  ?>

                  <p>Erreur d'authentification.<br/>
                  <br/></p>
                   <form action="ok.php" method="post">
                  <input type="text" name="pass" /> <input type="submit" value="OK" />
                  <?php
                  }
                  ?>
                  </body>
                  </html>


                  • Partager sur Facebook
                  • Partager sur Twitter
                    24 juin 2006 à 10:51:40

                    Citation : kakulupia

                    Ha ouais ^^

                    Dailleur je me demander, !empty revien au même que strlen($_POST['pass']) != 0 ou tout simplement $_POST['pass'] != '' ^^ ?

                    lol ...



                    Suffit de consulter la doc...
                    http://fr.php.net/manual/fr/function.empty.php

                    empty ne teste pas seulement des strings
                    • Partager sur Facebook
                    • Partager sur Twitter
                      24 juin 2006 à 10:52:41

                      Ok, mais ... je m'en fous XD

                      Ta réponce --> rien a voir avec la question, qui n'en etait pas une, vus que j'en suis sur ^^

                      • Partager sur Facebook
                      • Partager sur Twitter
                        24 juin 2006 à 11:26:42

                        Tu devrais pourtant consulter ce lien...

                        Ou du moins, essayé ce code :

                        <?php

                        $test = array();

                        echo empty($test);
                        echo strlen($test);

                        ?>


                        Et tu auras une belle notice, ce qui prouve que empty est différent de strlen == 0 ;)
                        • Partager sur Facebook
                        • Partager sur Twitter
                          24 juin 2006 à 11:29:51

                          Hm, pour le lien, je le consulte, et souvent ... (j'oublie souvent ce que veut dire une fonction ...^^ )

                          Mais il me semblais que puisque !empty servais à dire si la variable etait PAS VIDE, ca revenais au même de regarder si il y a des caractere dedans (si il y en a ,elle es pas vide non plus! )

                          Vila, sinon merci pour l'exemple lol
                          • Partager sur Facebook
                          • Partager sur Twitter
                            24 juin 2006 à 11:42:39

                            Citation

                            !empty servais à dire si la variable etait PAS VIDE, ca revenais au même de regarder si il y a des caractere dedans



                            Ca, c'est seulement pr le cas d'une chaine, mais pr un integer, ce n'est pas la mm chose, pour un boolean non plus...
                            Ce qui est considéré comme vide est : "" (une chaîne vide)
                            0 (0 en tant qu'entier)
                            "0" (0 en tant que chaîne de caractères)
                            NULL
                            FALSE
                            array() (un tableau vide)
                            var $var; (une variable déclarée, mais sans valeur dans une classe)

                            Or certains ne sont pas "vide" par exemple, 0 en tant que chaine de caractère n'est pas vide mais sera pourtant interpreté comme tel par empty.

                            Alors avant de m'envoyer balader, tu pourrais vérifier ce que tu avances...
                            • Partager sur Facebook
                            • Partager sur Twitter
                              24 juin 2006 à 11:48:46

                              Je me demande à quoi sert la répétition des entêtes et du balisage body dans le tuto de M@téo ? ^^
                              • Partager sur Facebook
                              • Partager sur Twitter
                                24 juin 2006 à 13:04:12

                                Je pense qu'il a fait ca pour que l'on s'habitue a separer le code html du php en raison de header ou setcookie par exemple.
                                Peut etre comme ca des les debuts on s'habitue a ne pas melanger le html et le php?
                                • Partager sur Facebook
                                • Partager sur Twitter
                                  24 juin 2006 à 13:07:10

                                  Citation : alem007

                                  Je pense qu'il a fait ca pour que l'on s'habitue a separer le code html du php en raison de header ou setcookie par exemple.
                                  Peut etre comme ca des les debuts on s'habitue a ne pas melanger le html et le php?


                                  Mouarf ! :p
                                  • Partager sur Facebook
                                  • Partager sur Twitter
                                    24 juin 2006 à 19:48:56

                                    tu sais j'ai fait une simple proposition comme je voyais pas d'autres explications
                                    • Partager sur Facebook
                                    • Partager sur Twitter

                                    Premier TP de mateo

                                    × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                                    × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                                    • Editeur
                                    • Markdown