我正在编写一个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
在设置标头之前,您无法回显$file,因为这会破坏输出。
从 php.net:
"请记住,在发送任何实际输出之前,必须调用header(),无论是通过普通的HTML标签,文件中的空白行还是从PHP。读取包含或require函数或其他文件访问函数的代码,并且在调用header()之前输出空格或空行,这是一个非常常见的错误。使用单个 PHP/HTML 文件时也存在同样的问题。'"