2009-08-17 83 views
1

我有以下几点:不能输出图像到SRC标签

$imageurl = "<img class='item_thumb' 
src='getimagethumbnail.php?imagename=".urlencode($product_image)."&from=".$prodimagedir."' 
min-width='150' min-height='150' border='0' class='item_thumb'>"; 

它创建下面的HTML:

<img class="item_thumb" border="0" min-height="150" min-width="150" 
src="getimagethumbnail.php?imagename=productsmall_1248886833bloggingbok.jpg& 
from=products/"/> 

然而,图像显示不出来。我将浏览器指向那个src链接,它给了我一堆难以理解的文本,我认为这个图像意味着脚本getimagethumbnail工作正常。 (我猜测)。

但正如我所说,图像并没有出现。什么是错的,我可以采取哪些步骤来确定问题?

我想补充,当我指出我的浏览器到SRC链接:这也给了我:

Warning: Cannot modify header information - headers already sent by 
(output started at /home/dji/public_html/getimagethumbnail.php:35) in 
/home/dji/public_html/includes/functions.php on line 4953 

我想这是因为输出?这个脚本工作正常,我没有做出任何改变,据我所知!

感谢

回答

7

您试图在输出空格/字符后发送header('Content-Type')命令。

您需要确保header命令在页面上打印任何内容之前。

这将工作:

header('Content-Type: ....'); 
readfile('file.png'); 

这不会

readfile('file.png'); 
header('Content-Type: ....'); 

这是因为header命令告诉浏览器来寻找内容是什么。所有的标题必须在任何内容之前发送,因为这是连接的工作方式。内容已经发送后,无法告诉浏览器会发生什么。

打开连接随着服务器 - >获取标题 - >获取内容 - >关闭连接

一个这背后是encoding大原因。随着内容的发布,浏览器必须正确解码。如果您在页面中间发送一个标题,告诉浏览器编码类型为a,那么当它像b一样处理它时,事情会变得非常混乱。

所以,为了正确地发送标题,你必须在任何输出之前放置标题命令。

+0

天才!这就像一个魅力!不知道如何失踪。 :) – Abs 2009-08-17 22:35:18

0

当你打印的东西到输出,然后尝试用头()方法错误造成的。在使用header()完成所需操作之前,您不应该输出任何内容。什么都不应该在这之前,甚至不是空白。

0

在设置图像类型的标题之前,您已经生成了一些输出(在行35上)。这可能只是php标签之间的空白区域,或者您忘记删除的内容。

0

您的getimagethumbnail.php脚本未生成有效图像;它包含文本(您引用的警告消息),这会阻止浏览器呈现它。根据错误文字判断,我猜这是由于对getimagethumbnail.phpfunctions.php所做的更改。

基本上,问题是functions.php正在试图呼叫header()输出已经发送到浏览器后,这只是简单的不会工作。您需要检查这两个文件并确保header()的任何呼叫都在之前其他任何将数据发送到浏览器的呼叫。

您可能需要关闭display_errors设置,因为任何生成任何警告或错误的代码都会导致您遇到的问题,如果警告/错误发生在您拨打header()之前。 (只要确保你有错误登录,所以你仍然可以看到出了什么问题!)