$ _FILES中未定义的索引

时间:2017-06-28 12:39:31

标签: php html image file server

我收到的错误是我的索引在$ _FILES中未定义。我想在我的服务器上用php复制一张图片。

错误:

PHP Notice:  Undefined index: bilddatei in C:\inetpub\wwwroot\aufgabe8.php on line 85
PHP Notice:  Undefined variable: namefile in C:\inetpub\wwwroot\aufgabe8.php on line 86

我已经尝试过使用isset($ _ FILES [" bilddatei"]),但这也会返回false。

代码:

<?php
session_start();

if (!isset($_SESSION['Datenbank']) and
    !isset($_SESSION['Kennung']) and !isset($_SESSION['Passwort']) )
{
    echo "<p>Bitte starten Sie zuerst mit der Eingabe-Startseite. Sie werden automatisch nach 5 Sekunden weitergeleitet.</p>";
    // automatisches Zurueckspringen nach 5 Sekunden nach 'index.html': 
    echo '<meta http-equiv="Refresh" content="5;url=login.php">';
} else {
          echo "<form action=\"aufgabe8.php\" method=\"post\" enctype=\"multipart/form-data\">
                    <p>Datei von PC hochladen
                        <input type=\"file\" name=\"bilddatei\" size\"60\" accept=\"image/*\"/>
                    </p>

                    <p><input type=\"submit\" value=\"Bild anzeigen\" name=\"bildBtn\"/></p>
                </form>";


    if(isset($_POST["bildBtn"])) {
            echo "<p>BILD IF</p>";

            $nameFile = $_FILES['bilddatei']['name'];
            echo "<p>$namefile</p>";

            //copy($fileSource,$destination); 

    }

你有什么想法吗?谢谢! :-)

2 个答案:

答案 0 :(得分:2)

变量名称不同。两个php变量都是case-sensitive。check $nameFile&lt; =&gt; $namefile

https://www.w3schools.com/php/php_variables.asp

$namefile = $_FILES['bilddatei']['name'];
echo "<p>$namefile</p>";

答案 1 :(得分:1)

我认为这些事情需要单独完成......

渲染表格

if (!isset($_SESSION['Datenbank']) and
    !isset($_SESSION['Kennung']) and !isset($_SESSION['Passwort']) )
{
    echo "<p>Bitte starten Sie zuerst mit der Eingabe-Startseite. Sie werden automatisch nach 5 Sekunden weitergeleitet.</p>";
    // automatisches Zurueckspringen nach 5 Sekunden nach 'index.html': 
    echo '<meta http-equiv="Refresh" content="5;url=login.php">';
} else {
    echo "<form action=\"aufgabe8.php\" method=\"post\" enctype=\"multipart/form-data\">
            <p>Datei von PC hochladen
                <input type=\"file\" name=\"bilddatei\" size\"60\" accept=\"image/*\"/>
            </p>

            <p><input type=\"submit\" value=\"Bild anzeigen\" name=\"bildBtn\"/></p>
        </form>";
}  ///missing } close I am assuming it goes here

第二个php文件(比如表格动作的aufgabe8.php)

if(isset($_POST["bildBtn"])) {
    echo "<p>BILD IF</p>";

    $nameFile = $_FILES['bilddatei']['name'];
    echo "<p>$nameFile</p>";  //spelling  $nameFile is not $namefile

    //copy($fileSource,$destination); 

}

只是因为你回复表单与提交表格时有很大的不同。您是否理解这一点,代码令人困惑。在任何情况下,它们都是两种不同的行为。

除了另一个答案中提到的拼写错误。

现在你可以在同一个页面中这样做

<?php
session_start();

if (!isset($_SESSION['Datenbank']) and
    !isset($_SESSION['Kennung']) and !isset($_SESSION['Passwort']) )
{
    echo "<p>Bitte starten Sie zuerst mit der Eingabe-Startseite. Sie werden automatisch nach 5 Sekunden weitergeleitet.</p>";
    // automatisches Zurueckspringen nach 5 Sekunden nach 'index.html': 
    echo '<meta http-equiv="Refresh" content="5;url=login.php">';
} else {

    if(isset($_POST["bildBtn"])) {
        ///submitted so process it
        echo "<p>BILD IF</p>";

        $nameFile = $_FILES['bilddatei']['name'];
        echo "<p>$nameFile</p>";  //spelling  $nameFile is not $namefile

        //copy($fileSource,$destination); 
    }else{
        ///not submitted so rendor the form
        echo "<form action=\"aufgabe8.php\" method=\"post\" enctype=\"multipart/form-data\">
            <p>Datei von PC hochladen
                <input type=\"file\" name=\"bilddatei\" size\"60\" accept=\"image/*\"/>
            </p>

            <p><input type=\"submit\" value=\"Bild anzeigen\" name=\"bildBtn\"/></p>
        </form>";

    }
}

您甚至可以渲染表单,并在同一个块中处理它(没有else),但只是渲染它并不意味着有人提交了它。在这种情况下,我会取消回声,只使用普通的旧html输出表格。