include文件中的post变量导致未定义的索引错误-原因


post variable in include file causes an undefined index error - why?

我在php include()文件中有以下代码行:

$code = $_POST['code'];

这会导致未定义的索引错误。include()文件中从不允许这样做吗?谢谢

为了澄清,我有一个check登录文件和一个include文件。包含文件中有一行:

$code = $_POST['code'];

索引文件有一行:

<tr><td><input name="code" type="text" autofocus></td></tr>

在检查登录中,我有以下行:

if ($code == "abcd") {
    session_start();
    $_SESSION['code'] = $code;
    header("location:list.php");
}

因此,现在,一旦在索引页面上输入了正确的代码,用户将成功到达适当的目的地,但会弹出"未定义索引"错误,关于
$code=$_POST["代码"];

再次感谢。

根据您发布的内容,我已经能够使用您代码的实现/解释成功地测试以下内容。

你可能省略了<form></form>标签,我不可能是100%,因为它没有显示在你的问题中。

以下工作取得了成功。如果输入了abcd,它将回显OK

否则,它将回声Sorry

旁注: 我建议您不要将session_start();放在当前的位置,因为它会抛出已发送的标头的错误。

如果可能的话,把它放在你的开场<?php标签下面,或者如果你想把session_start();放在现在的位置,把ob_start();放在你开场<?php标签下面

PHP

<?php
include 'included_file.php';
    if(!empty($_POST['code'])){
    if ($code == "abcd") {
        session_start();
        $_SESSION['code'] = $code;
    // header("location:list.php");
     // my own test - remove once using header above
    echo "OK";
    }
    else{
    echo "Sorry";
    }
} // brace for if(!empty($_POST['code']))
?>
<tr><td>
<form method="post" action="">
<input name="code" type="text">
</form>
</td></tr>

(included_file.php)

<?php
$code = $_POST['code'];

您可以尝试以下代码行:

    $code = '';
    $issetCode = isset( $_POST['code'] ) ? true : false ;
    if( ! $issetCode or ( $code = trim( $_POST['code'] ) ) == '' )
    {
        if( $issetCode ) echo 'Please enter code<br>';
        ?>
        <form method="post" action="">
            <input name="code" type="text" autofocus>
            <input type="submit">
        </form>
        <?php
    }
    else
    {
        if( $code == "abcd" )
        {
            session_start( );
            $_SESSION['code'] = $code;
            header( "location:list.php" );
        }
        else
        {
            // Invalid code !
        }
    }