PHP,未定义变量

PHP,未定义变量,php,Php,我试图进行验证码验证,但我的一个变量没有定义。以下是我的验证码生成器代码: <?php $num = rand(1,3); switch($num) { case 1: $img = ""; $answer = "nov 18th"; break; case 2: $img = ""; $answer = "jan 19t

我试图进行验证码验证,但我的一个变量没有定义。以下是我的验证码生成器代码:

<?php
    $num = rand(1,3);

    switch($num) {
        case 1:
            $img = "";
            $answer = "nov 18th";
            break;
        case 2:
            $img = "";
            $answer = "jan 19th";
            break;
        case 3:
            img = "";
            $answer = "school bad";
            break;
    }
?>

下面是我的脚本代码,用于检查验证码输入是否正确:

<?php
    ini_set('display_errors',1);

    print "<br /><br />";

    $captcha = $_POST['captcha-verif'];

    if ($captcha == $answer) {
        header('Location: recommend-action.php');
    }
    else {
        print "Incorrect Captcha. <a href='music.php'>Try Again</a>";
    }
?>

我一直收到这样的信息:

注意:未定义变量:在第9行的/var/www/tts/recomment-verify-captcha.php中回答


您没有在
推荐验证captcha.php
中声明应答变量,因此该变量不存在

根据你们的代码,我知道你们想要的答案是结果

<?php
$num = rand(1,3);

switch($num) {
    case 1:
        $img = "";
        $answer = "nov 18th";
        break;
    case 2:
        $img = "";
        $answer = "jan 19th";
        break;
    case 3:
        $img = "";
        $answer = "school bad";
        break;
}?>
然后在
推荐验证captcha.php
文件中使用此函数,可能类似于

<?php
    ini_set('display_errors',1);

    print "<br /><br />";

    $captcha = $_POST['captcha-verif'];
    $answer = getCapcha();
    if ($captcha == $answer) {
        header('Location: recommend-action.php');
    }
    else {
        print "Incorrect Captcha. <a href='music.php'>Try Again</a>";
    }
?>

您需要一个会话变量:

<?php
    // start session here
    session_start();
    $num = rand(1,3);

    switch($num) {
        case 1:
            $img = "";
            // store answer in session variables. 
            $_SESSION['answer'] = "nov 18th";
            break;
        case 2:
            $img = "";
            $_SESSION['answer']  = "jan 19th";
            break;
        case 3:
            $img = "";
            $_SESSION['answer']  = "school bad";
            break;
    }
?>

在第二个代码段中,确保再次启动会话

<?php
    // restart session
    session_start();
    ini_set('display_errors',1);

    print "<br /><br />";

    $captcha = $_POST['captcha-verif'];

    // compare $captcha against answer stored in the session
    if ($captcha == $_SESSION['answer']) {
        header('Location: recommend-action.php');
    }
    else {
        print "Incorrect Captcha. <a href='music.php'>Try Again</a>";
    }
?>


“我的一个变量未定义”。你想让我们猜猜是哪一个?您得到的具体错误消息是什么?$answer没有定义,我很抱歉。
案例3:
-您在变量名中省略了
$
。这就是我的想法。如何将$answer的数据传输到建议验证captcha.php?您使用的是两个不同的文件?似乎是这样,这就是为什么。另外,上面针对案例3所说的内容
$answer=“学校坏”isset()
将所有内容放在一个文件中。错误来自第二个代码片段,而不是第一个。不相关,因为它是在
案例中定义的
块。似乎不会更改任何内容。旁注:
answer=“school bad”
-OP说
$
在他们的代码中,“哦,我无意中删除了这个问题中的$,但它在我的实际文件中。”<代码>回答=“学校坏”将抛出未定义的持续通知(如果此答案中没有修复)。谢谢。Fred。又是打字错误。
<?php
    // restart session
    session_start();
    ini_set('display_errors',1);

    print "<br /><br />";

    $captcha = $_POST['captcha-verif'];

    // compare $captcha against answer stored in the session
    if ($captcha == $_SESSION['answer']) {
        header('Location: recommend-action.php');
    }
    else {
        print "Incorrect Captcha. <a href='music.php'>Try Again</a>";
    }
?>