IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

probleme avec les hidden et l'envoi POST


Sujet :

Langage PHP

  1. #1
    Candidat au Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2008
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4
    Points : 3
    Points
    3
    Par défaut probleme avec les hidden et l'envoi POST
    Bonjour à tous,

    Je veux envoyer des variables php via input hidden avec un formulaire qui appelle une page php externe par la methode POST.

    voici le code des deux pages:

    index.php

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html>
      <head>
        <title>MagicNumber 1.0</title>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
      </head>
      <body>
         <?php
            $magic_number = rand(1,100);
            $essai = 0;
         ?>
          <form method="post" action="magicnumber.php">
              Tapez un nombre  entre 1 et 100 : <input id="nombre_saisi" type="text" />
              <input id="magic_number" type="hidden" value="<?php $magic_number; ?>" />
              <input id="essai" type="hidden" value="<?php $essai; ?>" />
              <input id="valider" type="submit" value="Valider" />
          </form>
      </body>
    </html>

    et magicnumber.php

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    <?php
    $magic_number = $_POST['magic_number'];
     $nombre_saisi = $_POST['nombre_saisi'];
     $essai = $_POST['essai'];
     
     echo count($_POST);
     
     if(isset($nombre_saisi)){
         echo 'le nombre saisi est : '.$nombre_saisi;
     
        if($magic_number < (int)$nombre_saisi) {
             $essai++;
             echo 'Essai '.$essai;
             echo 'Plus grand!';
         }
         else if($magic_number > (int)$nombre_saisi) {
             $essai++;
             echo 'Essai '.$essai;
             echo 'Plus petit!';
         }
        else {
            echo 'Vous avez trouve en '.$essai.'essai(s)';
        }
      }
      else{
          echo 'valeurs non definies';
      }
    ?>
    apparemment la page magicnumber.php ne recoit aucune variable.pouvez vous m'aidez svp?

  2. #2
    Membre émérite Avatar de darkstar123456
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2008
    Messages
    1 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2008
    Messages : 1 896
    Points : 2 838
    Points
    2 838
    Par défaut
    tu ne fais jamais d'echo()

    exemple pour $essai
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <input id="essai" type="hidden" value="<?php $essai; ?>" />
    // DEVIENT
    <input id="essai" type="hidden" value="<?php echo $essai; ?>" />

    PS : entoure ton code des balises appropriées stp : [code ] ton code ici [ /code] (sans les espaces)

  3. #3
    Candidat au Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2008
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4
    Points : 3
    Points
    3
    Par défaut j'ai modifié mon code dans index.php
    maintenant index.php c'est ça:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html>
      <head>
        <title>MagicNumber 1.0</title>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
      </head>
      <body>
         <?php
            $magic_number = rand(1,100);
            $essai = 0;
         ?>
          <form method="post" action="magicnumber.php">
              Tapez un nombre  entre 1 et 100 : <input id="nombre_saisi" type="text" />
              <input id="magic_number" type="hidden" value="<?php echo $magic_number;?>" />
              <input id="essai" type="hidden" value="<?php echo $essai;?>" />
              <input id="valider" type="submit" value="Valider" />
          </form>
      </body>
    </html>
    quand magicnumber.php est appelé count($_POST) me donne toujours zero. donc aucune variable , meme pas le nombre_saisi n'est recue par magicnumber.php

    je vois pas le souci . please help

  4. #4
    Membre régulier Avatar de coach759
    Profil pro
    Webmaster
    Inscrit en
    Août 2009
    Messages
    79
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Août 2009
    Messages : 79
    Points : 92
    Points
    92
    Par défaut
    Bonjour,

    C'est normal que tu ne puisse pas récupérer la valeur de ton POST:
    Ce n'est pas
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <input type="text" id="essai"/>
    Mais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <input type="text" name="essai"/>
    Du coup, tu pourra récupérer tranquillement la valeur de tes POST.

    Deuxième chose, lorsque l'on récupère des valeurs saisies par l'utilisateur, il est souhaitable de les "protéger", grace à un htmlspecialchars() ou htmlentities(), comme ça, le serveur considère ce qu'à rentré l'utilisateur comme du HTML, donc inoffensif (Imagine que quelqu'un rentre des instruction qui effacerait ta base...)

    Bonne Journée

  5. #5
    Candidat au Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2008
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4
    Points : 3
    Points
    3
    Par défaut nouvelle version avec seulement index.php
    voici mon nouveau code pour index.php


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html>
      <head>
        <title>MagicNumber 1.0</title>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
         <?php
            $magic_number = rand(1,100);
            $essai = 0;
         ?>
      </head>
      <body>
          <form method="post" action="<?php echo $_SERVER['SELF']; ?>">
              Tapez un nombre  entre 1 et 100 : <input name="nombre_saisi" type="text" />
              <input name="magic_number" type="hidden" value="<?php echo $magic_number; ?>" />
              <input name="essai" type="hidden" value="<?php echo $essai; ?>" />
              <input name="valider" type="submit" value="Valider" />
          </form>
     
          <?php
             $magic_number = $_POST['magic_number'];
             $nombre_saisi = $_POST['nombre_saisi'];
             $essai = $_POST['essai'];
     
            htmlentities($essai);
     
            if(isset($nombre_saisi) && isset($magic_number) && isset($essai)){
                echo 'le nombre saisi est : '.$nombre_saisi.'<br/>';
                echo 'le nombre magique est : '.$magic_number.'<br/>';
     
                if($magic_number < (int)$nombre_saisi) {
                    $essai++;
                    echo 'Essai '.$essai;
                    echo 'Plus petit!';
                }
                else if($magic_number > (int)$nombre_saisi) {
                    $essai++;
                    echo 'Essai '.$essai;
                    echo 'Plus grand!';
                }
                else {
                    echo 'Vous avez trouve en '.$essai.'essai(s)';
                }
            }
        ?>
      </body>
    </html>
    comment faire pour stocker la valeur aleatoire de magic_number afin quelle ne change pas a chaque appel de la page?

  6. #6
    Modérateur
    Avatar de blueice
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2003
    Messages
    3 487
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2003
    Messages : 3 487
    Points : 5 134
    Points
    5 134
    Par défaut
    Dans une session...

  7. #7
    Membre averti
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Décembre 2004
    Messages
    304
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Décembre 2004
    Messages : 304
    Points : 405
    Points
    405
    Par défaut
    Utilise les variables de Session.
    Au 1er chargement de la page, tu crée une variable de session contenant ton nombre.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    session_start();
    if(!isset($_SESSION["magic_number"]))//Si la variable n'existe pas, on la crée
      $_SESSION["magic_number"]=taValeur;
     
    $magic_number=$_SESSION["magic_number"];

  8. #8
    Candidat au Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2008
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4
    Points : 3
    Points
    3
    Par défaut
    salut à tous,

    J'ai modifié le code de index.php en ajoutant les sessions mais la variable aleatoire est quand meme tout le temps modifiee, à chaque validation du submit. Je voudrais que la valeur aleatoire soit stockee une fois. et que meme apres rechargement de la page, elle ne change pas. comment faire? voici mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
     <?php 
        session_start();
     
        if(!isset( $_SESSION['magic_number']) && !isset( $_SESSION['essai'])) {
            $_SESSION['magic_number'] = rand(1,100);
            $_SESSION['essai'] = 0;
        }
    ?>
    <html>
      <head>
        <title>MagicNumber 1.0</title>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
      </head>
      <body>
          <form method="post" action="<?php echo $_SERVER['SELF']; ?>">
              Tapez un nombre  entre 1 et 100 : <input name="nombre_saisi" type="text" />
              <input name="essai" type="hidden" value="<?php echo $essai; ?>" />
              <input name="valider" type="submit" value="Valider" />
          </form>
     
          <?php
            $magic_number = $_SESSION['magic_number'];
            $essai = $_SESSION['essai'];
            $nombre_saisi = $_POST['nombre_saisi'];
     
            htmlentities($nombre_saisi);
     
            if(isset($nombre_saisi)){
                echo 'le nombre saisi est : '.$nombre_saisi.'<br/>';
                echo 'le nombre magique est : '.$magic_number.'<br/>';
     
                if($magic_number < (int)$nombre_saisi) {
                    $essai++;
                    echo 'Essai '.$essai;
                    echo 'Plus petit!';
                }
                else if($magic_number > (int)$nombre_saisi) {
                    $essai++;
                    echo 'Essai '.$essai;
                    echo 'Plus grand!';
                }
                else {
                    echo 'Vous avez trouve en '.$essai.'essai(s)';
                }
           }
        ?>
      </body>
    </html>
    Aidez moi svp

  9. #9
    Modérateur
    Avatar de blueice
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2003
    Messages
    3 487
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2003
    Messages : 3 487
    Points : 5 134
    Points
    5 134
    Par défaut
    Déjà la session doit être avant les en-têtes...

    Voici ce qui doit faire ce que tu veux :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
     
    <?php 
        session_start();
     
        if(!isset( $_SESSION['magic_number']) && !isset( $_SESSION['essai'])) {
            $_SESSION['magic_number'] = rand(1,100);
            $_SESSION['essai'] = 0;
        }
    ?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html>
      <head>
        <title>MagicNumber 1.0</title>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
      </head>
      <body>
          <form method="post" action="<?php echo $_SERVER['SELF']; ?>">
              Tapez un nombre  entre 1 et 100 : <input name="nombre_saisi" type="text" />
              <input name="essai" type="hidden" value="<?php echo $essai; ?>" />
              <input name="valider" type="submit" value="Valider" />
          </form>
     
          <?php
            $magic_number = $_SESSION['magic_number'];
            $essai = $_SESSION['essai'];
            $nombre_saisi = $_POST['nombre_saisi'];
     
            htmlentities($nombre_saisi);
     
            if(isset($nombre_saisi)){
                echo 'Le nombre saisi est : '.$nombre_saisi.'<br/>';
     
                if($magic_number < (int)$nombre_saisi) {
                    $essai++;
                    echo 'Essai '.$essai.'<br />';
                    echo 'Plus petit!';
                }
                else if($magic_number > (int)$nombre_saisi) {
                    $essai++;
                    echo 'Essai '.$essai.'<br />';
                    echo 'Plus grand!';
                }
                else {
                    echo '<font color="red">Vous avez trouve en '.$essai.' essai(s)</font>';
                    session_destroy();
                }
           }
        ?>
      </body>
    </html>

Discussions similaires

  1. bot HTTP probleme avec les POST
    Par djo0012 dans le forum C++
    Réponses: 3
    Dernier message: 21/07/2006, 05h40
  2. probleme avec les posts des formulaires
    Par axel-erator dans le forum Langage
    Réponses: 6
    Dernier message: 04/05/2006, 11h41
  3. PROBLEME AVEC LES REQUETES IS NULL / NOT EXISTS
    Par sylvaine dans le forum Langage SQL
    Réponses: 5
    Dernier message: 04/06/2004, 13h26
  4. Problem avec les *.AVI sur les panels
    Par NaDiA_SoFt dans le forum C++Builder
    Réponses: 3
    Dernier message: 31/08/2003, 22h50
  5. probleme avec les processus
    Par saidi dans le forum Autres éditeurs
    Réponses: 1
    Dernier message: 05/02/2003, 00h18

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo