0

我正在编写一个 php 系统来根据给定方法的参数加载图像。直到最近,当我修改它时,这段代码都可以正常工作。这是那些经典的“它正在工作,但现在,突然之间,它不是”案例之一。我不知道我做了什么把它搞砸了,也就是说,如果我做了什么把它搞砸了。

public function image($parameters) {

    //default values for parameters
    $param1 = ' ';
    $param2 = ' ';

    if(!empty($parameters)) {

        foreach($parameters as $key => $value){

            if(!empty($parameters[$key+1])) {

                $value = $value . '/';

            }

            switch($key) {

                case 2:
                    $param1 = $value;
                break;
                case 3:
                    $param2 = $value;
                break;

            }
        }

    }

    $dir = '/resources/images/';
    $file = VIEWDIR . $dir . $param1 . $param2;
    echo $file;
    if(file_exists($file)) {

        $file = file_get_contents($file);
        header("Content-type: image/png");
        echo $file;

    }

}

上面的代码生成以下 HTML

4

1 回答 1

0

在设置标头之前不能回显 $file ,因为这会破坏输出。

来自php.net

“请记住,必须在发送任何实际输出之前调用 header(),无论是通过普通 HTML 标记、文件中的空白行还是从 PHP 中。使用包含或要求函数读取代码是一个非常常见的错误,另一个文件访问函数,并在调用 header() 之前输出空格或空行。使用单个 PHP/HTML 文件时存在同样的问题。"

于 2013-10-29T01:40:45.563 回答