使用<img/>时不显示PHP图像

时间:2013-11-11 21:35:06

标签: php image

我发现很多帖子描述了同样的问题,但我尝试过的一切都失败了。 对于个人资料页面,我让人们可以上传4张图片。当没有图片可用时,我想显示默认图片。我的完整代码就是这样:

$id = $_GET['ID'];
$link = mysql_connect("xxx", "xxx", "xxx");
mysql_select_db("xxx");
$sql = "SELECT * FROM profielen WHERE ID = $id";
$result = mysql_query("$sql");
$row = mysql_fetch_assoc($result);
mysql_close($link);

header("Content-type: image/jpeg");

if ($row['Foto4'] == NULL){
    //echo '<img src="/img/noImage.jpg" />';
    echo $row['Foto5'];
}
else {
    echo $row['Foto4'];
}

在这种形式下代码有效,所以我知道if语句是正确的。 当我尝试取消注释注释行时,它会显示一个断开的链接作为图像。

我尝试使用双引号然后转义img标记中的双引号。我还尝试将其称为变量,并且在img-path之前没有/。并且还试图说回声“没有图像”,但似乎如果我做除了echo $ row [x]以外的任何事情它只是不起作用。当我尝试在HTML中显示图像时,它工作正常,因此文件的名称是正确的。

我的想法已经不多了,所以也许有人可以提供帮助?

2 个答案:

答案 0 :(得分:1)

您的代码的问题在于您正在发送HTML以嵌入图像,而实际上,您应该将图像数据发回。你可以通过将用户重定向到“noImage.jpg”来解决这个问题,这样用户就可以从请求中获得一个图像,一切都会好的:)

此代码可能如下所示:

if ($row['Foto4'] == NULL){
    header('Location: /image/noImage.jpg');
} else {
    echo $row['Foto4'];
}

答案 1 :(得分:0)

如果您使用内容类型image/jpeg,则浏览器需要图像的原始二进制数据。相反,你给它HTML代码。

您可以使用Location - 标头,告诉浏览器打开另一个地址。

header("Location: /img/noImage.jpg");

请记住,如果使用此方法,则无法输出任何其他数据或写入任何其他标题。