PHP,变量未定义


PHP, variable is not defined

我正在尝试进行验证码验证,但我的一个变量没有定义。这是我的验证码生成器代码:

<?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/recommendation-verify-captcha.php 中回答

你需要一个会话变量:

<?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>";
    }
?>

你没有在recommend-verify-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;
}?>

所以你可以这样做

function getCapcha(){
    $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;
    }
}

然后在您的recommend-verify-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>";
    }
?>