2010-05-11 5 views
0

Je reçois le chemin de l'image de base de données dans ce foreachpourquoi mon chemin d'image n'est pas pris?

foreach($image as $row){ 
    $value = $row['dPath']; 
    $imgpath =base_url()."images/".$value;//this is not taken 
    $imgpath = base_url()."images/con_icon.jpg";//this$imgpath is taken 

    echo $value; 

quand je donne $ CheminImg comme $ CheminImg = base_url() "images/con_icon.jpg". il est accepté dans

<img src="<?php echo $imgpath; ?>" and image is displayed 

Mais quand je donne $ CheminImg comme $imgpath =base_url()."images/".$value; mais echo $value; résultats con_icon.jpg L'image n'apparaît pas quel est le problème

EDIT:

echo $imgpath =base_url()."images"."/".$value; 
echo $img = base_url()."images/con_icon.jpg"; 

m'a donné cette

http://localhost/ssit/images/con_icon.jpg 
http://localhost/ssit/images/con_icon.jpg 

alors pourquoi je ne peux pas obtenir dans mon <img>

<img src="<?php echo $imgpath; ?>" name=b1 width=90 height=80 
border=0 onmouseover=mouseOver() onmouseout=mouseOut()> 
+0

... je sens l'odeur XSS ... – knittl

+1

Essayez un peu de débogage simple:'echo imgpath' de $ pour les deux versions et voir ce que la différence est. – deceze

+0

s'il vous plaît utiliser des guillemets autour de vos valeurs d'attribut – knittl

Répondre

3

assurez-vous que votre $value ne contient pas des espaces supplémentaires à l'avant ou à la fin. utiliser

$value = trim($value); 

à . également echo n'est pas le meilleur moyen de mettre rapidement au point les variables, utilisez plutôt var_dump.

et s'il vous plaît assurez-vous d'échapper à votre imagepath pour éviter XSS

modifier

vous ne pouvez pas dire <img src="<?php echo $imgpath; ?>" name=b1 width=90 height=80 border=0 onmouseover=mouseOver() onmouseout=mouseOut()> parce que vous avez espaces à la fin de votre chaîne. utilisez <img src="<?php echo trim($imgpath); ?> … /> si vous devez l'utiliser de cette façon. En dehors de cela, citez vos attributs: onmouseover="mouseOver", n'utilisez pas de parenthèses après les noms de vos gestionnaires d'événements (sauf si mouseOver() renvoie une fonction - je ne pense pas que vous le faites ...). et vous devez utiliser urlencode pour votre imagepath, pour bloquer tous les pirates qui veulent nuire à vos utilisateurs

+0

@udaya: voir, il ya l'espace supplémentaire à la fin. il devrait être 'string (12)" con_icon.jpg "' et non 'string (18)" con_icon.jpg [espace] "' – knittl

+0

pourquoi le downvote⁉⁉?!? la réponse est parfaitement valide et répond même parfaitement au problème: espace dans le nom de fichier – knittl

+0

@knittl voir mon edit ... – udaya

0

Assurez-vous que $value ne vient pas vide:

var_dump($value); 

En outre, vous pouvez essayer ceci:

$imgpath = get_bloginfo('template_url') . "/images/" . $value; 
+0

var_dump retrns \t chaîne (18) "con_icon.jpg" – udaya

+0

@udaya: utilisez la 'trim' avant que la fonction de valeur telle que suggérée par Knittl – Sarfraz

+0

il y a une balise de saut de ligne à la fin' '
, pas des espaces blancs. stackoverflow ne l'affichera pas dans les commentaires, à moins qu'il ne soit entouré de backticks. sa chaîne est 'con_icon.jpg
' – knittl

Questions connexes