2010-03-02 9 views
0

j'ai suivant code php qui affiche société logoimage php ne montrant pas

 <?php 
    $key=$_GET['key']; 
    /// key process /// 

    //////////////////// 
    ?> 
    <img src=images/logo.jpg" /> 

quand je lance ce fichier php cette logo.jpg show mais quand j'appelle cela de

 <img src="../temp.php?key=123" width="438" height="100" /> 

il didn 't montrer l'image

effectivement ce que je veux suivre cette image.

Merci

+0

Que fait temp.php? Qu'est-ce que vous obtenez lorsque vous appelez l'image directement dans votre navigateur? –

+0

En effet, il définit la balise img pour lire '" width = "438" height = "100" /> "' qui est bien sûr, html invalide. – JAL

+0

@Salsa non, ce n'est pas le cas: il définit le tag d'image comme "(qu'il lit à partir de l'Uri) en tant que données d'image binaire. –

Répondre

4

Si vous voulez utiliser quelque chose comme ceci:.

Alors temp.php devrait en fait:

  • envoyer en-têtes HTTP pour certains type de contenu d'image
  • et envoyer la réelle du contenu de l'image.
    • et aucun code HTML

En effet, le navigateur attend que l'URL pointée par l'attribut src de la balise <img> correspond en fait à une image valide - et non pas un HTML texte.


Par exemple, temp.php pourrait contenir quelque chose comme ceci:

<?php 
$key = $_GET['key']; 
// TODO : security check on $key !!! 
$file = 'images/logo-' . $key . '.jpg'; 
header('Content-type: image/jpeg'); 
readfile($file); 
?> 


En quelques sidenotes:

  • Vous devez envoyer le droit Content-type en-tête HTTP; ce qui signifie que vous devez savoir si votre image est un gif, jpeg, png, ...
  • Vous devez vérifier si $_GET['key'] est correct, pour ne pas envoyer le contenu d'un fichier non-voulu!
  • Il ne devrait y avoir aucun caractère d'espace blanc avant ou après les balises <?php ... ?>: la seule sortie doit être le contenu de l'image.
2

Au lieu de votre script PHP sortie une balise img supplémentaire, vous devez avoir lu les données d'image binaires et de sortie qui, avec les en-têtes Content-Type.

temp.php devrait être quelque chose comme:

header('Content-Type: image/jpeg'); 
echo file_get_contents($the_path_to_image); 
2

Eh bien, le script PHP retourne la sortie HTML, pas une image. Si vous voulez que votre fichier temp.php renvoie une image qui peut être utilisée dans un élément d'image, vous devez utiliser PHP-GD pour créer une image, importer/copier l'image, puis sortir l'image au format JPEG avec l'image appropriée en-têtes.

3

Pour faire ce travail, dans votre temp.php, vous devez lire et de sortie des données d'image réelle (précédée de header('Content-type: image/jpeg');.

Un fichier HTML contenant une balise d'image ne peut pas être utilisé comme src pour une autre image tag

0

Est-ce juste moi ou ... Si le code est en effet ce que vous avez

<img src=images/logo.jpg" /> 

devrait être

<img src = "images/logo.jpg"> 

Il n'a pas de guillemets d'ouverture?