包含文件中的post变量会导致未定义的索引错误 - 为什么?

时间:2014-04-10 23:24:40

标签: php

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

$code = $_POST['code'];

这会导致未定义的索引错误。这是否永远不允许在include()文件中?谢谢!

为了澄清,我有一个check-login文件和一个包含文件。在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 ['code'];

再次感谢。

2 个答案:

答案 0 :(得分:1)

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

您可能已省略<form></form>代码,但由于问题未显示,我不能100%。

以下产生了成功的结果。如果输入abcd,则会回显OK

否则它将回显Sorry

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

如果可能的话,将其放在您的<?php标记下方,或者如果您要将ob_start();保留在目前的位置,请将<?php放在您的session_start();标记下。

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'];

答案 1 :(得分:0)

你可以沿着这些代码尝试一些东西:

    $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 !
        }
    }