0

我遇到了一个非常烦人的错误。在 > 我的脚本结束后。

<html>
<body>
    <h1>Upload file to see previous upload!</h1>
    <form action="index.php" method="post" enctype="multipart/form-data">
        <label for="file">Filename:</label>
        <input type="file" name="file" id="file">
    <br>
    <input type="submit" name="submit" value="submit">
    </form>
    <?PHP
            if (isset ($_FILES["file"])) {
                $allowedExts = array("jpeg", "jpg", "png");
                $temp = explode(".", $_FILES["file"]["name"]);
                $extension = end($temp);
                if ((($_FILES["file"]["type"] == "image/jpeg")
                  || ($_FILES["file"]["type"] == "image/jpg")
                  || ($_FILES["file"]["type"] == "image/pjpeg")
                  || ($_FILES["file"]["type"] == "image/x-png")
                  || ($_FILES["file"]["type"] == "image/png"))
                  && ($_FILES["file"]["size"] < 1048576)
                  && in_array($extension, $allowedExts)) {
                    if ($_FILES["file"]["error"] > 0) {
                        echo "Error: Couldn't upload file!";
                    } else {
                        move_uploaded_file($_FILES["file"]["tmp_name"], "files/" . $_FILES["file"]["name"]);
                    }
                } else {
                    echo "Upload a file NAO!";
                }
            }
        ?>
</body>
</html>

所以在我的页面上我可以读到:“ 0) { echo "Error: Couldn't upload file!"; } else { move_uploaded_file($_FILES["file"]["tmp_name"], "files/" . $_FILES["file"]["name"]); } } else { echo "welcome!"; } } ?>

好吧,你猜怎么着!那不是我的意图......所以如果有人能解释我为什么会发生这种情况,我将不胜感激。

4

2 回答 2

5

PHP 根本没有被处理。确保您的页面是一个.php页面并且在 PHP 服务器上。否则,请确保 Apache 正在处理您使用的任何文件扩展名的 PHP。

<?php另外,请注意,在 中使用小写 PHP代替更为常见<?PHP,尽管大小写似乎无关紧要。

于 2013-09-04T19:17:09.637 回答
2

由于错误的文件名或misspelled start of php codeie<?PHP而不是<?php以下代码被视为 HTML 标记的一部分:

 <?PHP
        if (isset ($_FILES["file"])) {
            $allowedExts = array("jpeg", "jpg", "png");
            $temp = explode(".", $_FILES["file"]["name"]);
            $extension = end($temp);
            if ((($_FILES["file"]["type"] == "image/jpeg")
            || ($_FILES["file"]["type"] == "image/jpg")
            || ($_FILES["file"]["type"] == "image/pjpeg")
            || ($_FILES["file"]["type"] == "image/x-png")
            || ($_FILES["file"]["type"] == "image/png"))
            && ($_FILES["file"]["size"] < 1048576)
            && in_array($extension, $allowedExts))
            {

            if ($_FILES["file"]["error"] >

注意开始<....结束>

其余的是您在浏览器中看到的内容verbatim

.php用扩展名重命名您的文件。

最好将 PHP 代码更改为:

<?php
// PHP code here
?>

编辑:感谢所有评论,它似乎<?PHP<?php两者都会起作用。

编辑 2:要检查的另一件事是 Apache 配置,类似于以下行:

AddType application/x-httpd-php .php

这基本上告诉 Apache 将所有.php文件视为 PHP 脚本。

于 2013-09-04T19:17:02.640 回答