PHP脚本在>之后结束(不是?>)

时间:2013-09-04 19:11:00

标签: php

我有一个非常烦人的错误。在>之后我的剧本结束了。

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

好吧,猜猜看!那不是我打算做的......所以如果有人能解释我为什么会这样,我会很感激。

2 个答案:

答案 0 :(得分:5)

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

另请注意,在<?php而不是<?PHP中使用小写PHP更为常见,尽管看起来大小写并不重要。

答案 1 :(得分:2)

由于文件名错误或misspelled start of php code<?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脚本。