【问题标题】:Php Session Variable ErrorPHP 会话变量错误
【发布时间】:2013-09-17 13:17:03
【问题描述】:

嘿,我在会话和无效变量方面遇到了一些问题:O IMO 我可能认为它可能与 PHP_SELF 或变量 $nombreentre 有关 但我会让你检查一下:) 谢谢

<?php 
    $formulaire = '<FORM method="POST" action="<?php $_SERVER[\"PHP_SELF\"]; ?>">
    <p>
    <label>Entrez un nombre de 0 a 100 :</label> <input name="nombre" type="text"/>
    <input type="submit" value ="Valider !"/>
    </p>
    </form>' ;

    if(isset($_POST['nombre']))
    {
    $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 trouve le nombre mystere !';
            session_destroy();
        }
}    
?>

【问题讨论】:

  • 哇,反对票来了。您在测试并表明您可以调试后提出问题。说你认为它可能是什么,但你会让我们调试它......对不起,但可能不会得到任何帮助。
  • 我试图找到它大约 4 小时,我只是不知道该怎么做,答案可能在这些提示之间,但我没有找到任何地方知道我可以写什么 .. :(跨度>
  • 您可以从显示您遇到的错误开始。
  • 未定义变量:nombreentre
  • 有意义,因为您是在 if(isset($_POST['nombre']) {} IF 子句中创建该变量。这意味着它不是脚本其余部分中创建的变量除非 IF 计算结果为 TRUE。

标签: php html variables session


【解决方案1】:

试试这个:

我们只是移动了第一个 IF 的结束 }。

if(isset($_POST['nombre'])) {
    $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 trouve le nombre mystere !';
            session_destroy();
        }
    }
}  

【讨论】:

  • 如果isset($_POST['nombre']) 计算结果为真且$_SESSION['nombremystere'] 未设置,您将收到未定义索引通知 - 您还需要使用isset() 进行检查。
【解决方案2】:

您的代码中有几个错误,但是当isset($_POST['nombre'])empty($_SESSION['nombremystere']) 都返回false 时出现未定义变量错误。

您需要完善您的逻辑 - 可能更符合以下思路:

// we can only check for a win if we have an answer *and* the user has made a guess
if(isset($_SESSION['nombremystere']) && isset($_POST['nombre'])) {
    $nombreentre = htmlentities(stripslashes($_POST['nombre']));
    if ($_SESSION['nombremystere'] > $nombreentre) {
        echo 'C\'est plus !';
        echo $formulaire;
    }
    else if ($_SESSION['nombremystere'] < $nombreentre) {
        echo 'C\'est moins !';
        echo $formulaire;
    }
    else {
        echo 'Bravo, vous avez trouve le nombre mystere !';
        session_destroy();
    }
}

// either the user hasn't submitted a guess, or we haven't generated a random number for them to guess
else {
    $_SESSION['nombremystere'] = mt_rand(0, 100);
    echo '<form method="post" action="' . $_SERVER["PHP_SELF"] . '">
    <p>
    <label>Entrez un nombre de 0 a 100 :</label> <input name="nombre" type="text"/>
    <input type="submit" value ="Valider !"/>
    </p>
    </form>';
}

【讨论】:

    猜你喜欢
    • 2013-04-13
    • 1970-01-01
    • 2011-10-27
    • 1970-01-01
    • 1970-01-01
    • 2012-08-03
    • 2013-05-01
    • 2011-06-09
    相关资源
    最近更新 更多