0

我正在和两个同学一起做一个学校项目。我们的任务是为网络制作一个动态画廊。
所以我们让整个画廊完美地运行起来,除了 chrome 对此表现得很奇怪。
我们将图片和缩略图上传到 blob 中。我们通过 php 从数据库中加载它们。

<div id="content_right">
<?php
if(isset($_GET['c'])) {
$c = $_GET['c'];
$thumbs_sql = mysql_query("SELECT foto_id
     FROM `fotos`
     INNER JOIN foto_cat ON fotos.foto_cat = foto_cat.cat_id
     WHERE fotos.foto_cat = $c");
}
else{
$thumbs_sql = mysql_query("SELECT foto_id 
     FROM fotos 
     INNER JOIN foto_cat ON fotos.foto_cat = foto_cat.cat_id
     ORDER BY RAND() LIMIT 8");
}
while($getthumbs = mysql_fetch_array($thumbs_sql))
{
 $thumb_id = $getthumbs["foto_id"];
 $picsource = 'inc/thumbnails.php?thumb='.$thumb_id;
 $thumb .= '<div class="ikon">
 <img alt="'.$thumb_id.'" src="'.$picsource.'" value="inc/picture.php?pic='.$thumb_id.'" />
</div>';
}
echo $thumb;
?>
</div>

问题是,它在除 chrome 之外的任何浏览器中都能完美运行。问题是浏览器(或服务器)似乎在我们的文件源中添加了一个非常奇怪的实体(对于 img-tag)。它不能在页面源中显示,也不能通过回显源。它只能通过 chromes 开发者工具看到,并显示为一个正方形(未知实体?)。它被放置在“inc/”之后。

替代文字(chrome开发者工具中问题的图片示例。)

这不仅看起来很奇怪,而且当我们使用 localhost(wamp/mamp/xampp 等)时,它在 chrome 中完美运行。同样,如果硬编码到 url 栏或源中,图像仍然可以下载/查看。
我们尝试将其转换为字符串,通过 php 添加斜线,设置 enctype 以及我们可能想到的任何其他内容。
这使我们相信它一定是服务器端问题?我们误会了吗?
如果没有,是否有通过编码的解决方法?

该画廊位于http://46246.rtsphp.dk/gallery/index.php
让我知道您是否需要比这更多的文件或其他任何文件。任何帮助将不胜感激,因为我们自己一无所知:S

~Esben Tind (esbentind at gmail dot com)

4

2 回答 2

3

这是一个服务器端问题。您的 thumbnails.php 脚本正在发送以下标头:

内容处置:附件;文件名=nytaar1.jpg

这使浏览器尝试下载文件。我建议在 thumbnails.php 中搜索并删除它。

于 2010-10-12T15:49:00.077 回答
0

您需要使用该htmlspecialchars()函数对您在 HTML 中使用的所有值进行 HTML 编码,如下所示:

<img alt="'.htmlspecialchars($thumb_id).'" src="'.htmlspecialchars($picsource).'" value="inc/picture.php?pic='.htmlspecialchars($thumb_id).'" />

否则,如果任何值包含 & 字符或类似字符,您将生成无效的 HTML,并且输出未定义 - 一些浏览器可能会正确猜测您的意思,其他浏览器会错误猜测或拒绝呈现您的 HTML。

于 2010-10-12T15:51:13.660 回答