Un bug dans mon scripte

bonjour j'ai créer un jeux plus ou moins en php et sa m'affiche se message d'erreur "Notice: Undefined index: nombre in C:\wamp\www\tests\plusmoins.php on line 13"

et voici le scripte

<?php
session_start(); //On initialise la session
?>
<?php

$formulaire = '<form action="plusmoins.php" method="post">
<p>
<label>Entrez un nombre de 0 à 100 :</label> <input name="nombre" type="text"/>
<input type="submit" value ="Valider !"/>
</p>
</form>';

$nombreentre = htmlentities(stripslashes($_POST['nombre']));

if (empty($_SESSION['nombremystere']))
{
$_SESSION['nombremystere'] = mt_rand(0, 100);
echo $formulaire;
}
else
{
if ($_SESSION['nombremystere'] > $nombreentre)
{
echo 'C\'est plus !';
echo $formulaire;
}
elseif ($_SESSION['nombremystere'] < $nombreentre)
{
echo 'C\'est moins !';
echo $formulaire;
}
else
{
echo 'Bravo, vous avez trouvé le nombre mystère !';
session_destroy();
}
}
?>

4 réponses

  • Votes
  • Date
  • Date décroissante
  1. Si ligne 13 correspond à ca:

    $nombreentre = htmlentities(stripslashes($_POST['nombre']));

    Remplace par ca:

    $nombreentre = htmlentities(stripslashes(isset($_POST['nombre'])?$_POST['nombre']:""));

    Ca ira tout de suite mieux!
    1. merci et maintenant quand j'ouvre le scripte y a maquer c'est plus
      1. A la première utilisation, il considère que ton nombre entré est égal à 0 même si tu n'as rien entré.

        Si tu ne veux pas de ca, il faut changer ton code par ca:

        <?php
        session_start(); //On initialise la session
        ?>
        <?php

        $formulaire = '<form action="plusmoins.php" method="post">
        <p>
        <label>Entrez un nombre de 0 à 100 :</label> <input name="nombre" type="text"/>
        <input type="submit" value ="Valider !"/>
        </p>
        </form>';

        $nombreentre = htmlentities(stripslashes(isset($_POST['nombre'])?$_POST['nombre']:""));

        if ($nombreentre<>""){
        if (empty($_SESSION['nombremystere']))
        {
        $_SESSION['nombremystere'] = mt_rand(0, 100);
        echo $formulaire;
        }
        else
        {
        if ($_SESSION['nombremystere'] > $nombreentre)
        {
        echo 'C\'est plus !';
        echo $formulaire;
        }
        elseif ($_SESSION['nombremystere'] < $nombreentre)
        {
        echo 'C\'est moins !';
        echo $formulaire;
        }
        else
        {
        echo 'Bravo, vous avez trouvé le nombre mystère !';
        session_destroy();
        }
        }
        }
        ?>
    2. sa fonctionne pas sa m'affiche rien
      1. et avec ca:

        <?php
        session_start(); //On initialise la session
        ?>
        <?php

        $formulaire = '<form action="plusmoins.php" method="post">
        <p>
        <label>Entrez un nombre de 0 à 100 :</label> <input name="nombre" type="text"/>
        <input type="submit" value ="Valider !"/>
        </p>
        </form>';

        $nombreentre = htmlentities(stripslashes(isset($_POST['nombre'])?$_POST['nombre']:""));

        if ($nombreentre<>""){
        if (empty($_SESSION['nombremystere']))
        {

        $_SESSION['nombremystere'] = mt_rand(0, 100);
        echo $formulaire;
        }
        else
        {
        if ($nombreentre<>""){
        if ($_SESSION['nombremystere'] > $nombreentre)
        {
        echo 'C\'est plus !';
        echo $formulaire;
        }
        elseif ($_SESSION['nombremystere'] < $nombreentre)
        {
        echo 'C\'est moins !';
        echo $formulaire;
        }
        else
        {
        echo 'Bravo, vous avez trouvé le nombre mystère !';
        session_destroy();
        }
        }
        }
        ?>