2010-10-12 28 views
0

Je travaille sur un projet d'école avec deux camarades de classe. Notre tâche est de faire une galerie dynamique pour le web.
Donc, nous avons fait fonctionner toute la galerie, sauf que le chrome est très puissant.
Nous avons téléchargé nos images dans blob, ainsi que nos vignettes. Nous les chargeons depuis la base de données via php.Entités impaires dans le texte généré (chrome est bizarre)

<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> 

La chose est, il fonctionne parfaitement dans n'importe quel navigateur mais chrome. Le problème est que le navigateur (ou le serveur) semble ajouter une entité très étrange dans notre fichier-source (pour l'img-tag). Il ne peut pas être affiché dans la source de la page, ni en faisant écho à la source. Il est uniquement visible via les outils de développement chromes et apparaît sous la forme d'un carré (entité inconnue?). Il est placé juste après "inc /".

alt text (image par exemple du problème dans les outils de développement de chrome.)

Non seulement cela semble étrange, mais aussi, il fonctionne parfaitement en chrome lorsque l'on utilise un localhost (WAMP/MAMP/xampp etc.). De même, l'image peut toujours être téléchargée/visualisée si elle est codée en dur dans la barre d'URL ou la source.
Nous avons essayé de le convertir en chaîne, en ajoutant le slash à travers php, en définissant enctype et tout ce que nous pourrions penser. Cela nous amène à croire qu'il doit s'agir d'un problème côté serveur? Nous trompons-nous?
Et si ce n'est pas le cas, existe-t-il une solution de contournement via le codage? La galerie est au http://46246.rtsphp.dk/gallery/index.php. Faites-moi savoir si vous avez besoin de plus de fichiers que celui-ci, ou quoi que ce soit d'autre. Toute aide serait grandement appréciée, puisque nous nous sommes désemparés: S

~ Esben Tint (esbentind arobase gmail point com)

+0

C'est probablement parce que vous utilisez un langage corrompu dans vos commentaires HTML: D (désolé, je ne pouvais pas me contenir) – mingos

+0

Veuillez utiliser mysql_real_escape string() sur ce $ c utilisé dans la requête. – ikanobori

+0

danish_manners (! $ Care); , salope en danois signifie fin. ;) (assez drôle bien que je rofld) –

Répondre

3

Ceci est un problème de Serverside. Votre script thumbnails.php envoie l'en-tête suivant:

Content-Disposition: attachement; filename = nytaar1.jpg

Cela fait essayer au navigateur de télécharger le fichier. Je suggérerais de chercher cela dans thumbnails.php et de le supprimer.

+0

merci pour les réponses rapides, mal vous faire savoir si cela fonctionne. –

+0

merci pour éclaircir sur le téléchargement de l'image, même si cela n'a pas résolu le problème principal. –

0

Vous devez HTML encoder toutes les valeurs que vous utilisez en HTML, en utilisant la fonction htmlspecialchars(), comme ceci:

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

Dans le cas contraire, si l'une des valeurs par hasard contient & caractères ou similaire, vous produire HTML non valide, et la sortie n'est pas définie - certains navigateurs peuvent deviner correctement ce que vous vouliez dire, d'autres vont mal deviner ou simplement refuser de rendre votre HTML.

+0

désolé, je l'ai essayé mais il n'a absolument rien fait pour moi dans ce cas. –

+0

En voyant la capture d'écran, je doute aussi que l'encodage HTML puisse résoudre quoi que ce soit. – tdammers