PHP - Funcion 'file_exists'

 
Vista:

Funcion 'file_exists'

Publicado por Edu (3 intervenciones) el 21/06/2005 16:44:58
Hola,

Tengo creado el siguiente codigo, con el fin de mostrar junto a unos enlaces su icono correspondiente, en este caso el que se suele incluir junto a la URL en la barra de direcciones que suele denominarse 'favicon.ico'. El problema es que parece que la funcion 'file_exists' no coge bien la variable 'direccion' porque no me incluye ninguna imagen, ya que siempre recorre el 'else'... ¿alguna idea de lo que pude salir mal?

Un saludo y gracias por adelantado

<?php
$direccion = $row->url .'/favicon.ico';
if (file_exists("$direccion")) {
$img = '<img src='. $direccion .'>';
} else {
$img = NULL;
}
echo $img;
?>
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Funcion 'file_exists'

Publicado por Mike79 (669 intervenciones) el 21/06/2005 18:29:48
Pues esta bien, tu codigo esta bien, pero creo que tu logica esta mal.

Algo que me quedo duda es como tiene el url la variable $row->url ¿en forma absoluta o relativa?, este te comento por que si el url es /carpeta/favicon.ico entonces nunca lo va a encontrar. Ya que de seguro en tu disco duro no existe el archivo \carpeta\favicon.ico.

Si es relativo entonces, la pregunta seria, ¿todas las urls estan dentro del directorio donde se encuentra el escript? por que si no, entonces tienes que anteponerle la ruta completa donde estan los archivos.

Ejemplo:
Supongamos que asi esta nuestro servidor:

archivos
--carpeta
----datos.html
----favicon.ico
--img
----imagen1.jpg
----imagen2.jpg
--scripts
----script.php

Y supongamos que el script.php es el que esta preguntando si existe el archivo.
Supongamos que $row->url . '/favicon.ico' nos da: archivos/carpeta/favicon.ico

------------
Es decir un url de forma relativa.
Entonces nuestro escrip nunca lo encontraria, para que lo encuentre hay que concatenar en este caso toda la ruta completa, que podria ser de forma relativa o absoluta.

Relativa:
if (file_exists("../".$direccion)) {

Absoulta en Linux:
if (file_exists("/var/www/".$direccion)) {

Absoluta en Windows:
if (file_exists("c:\archivos de programa\apache group\apache\html\".$direccion)) {

----------
Si nuestro url es de forma absoluta, en este caso seria /archivos/carpeta/favicon.ico tendriamos que quitar la primera diagonal / y sustituirla por la ruta absoluta o relativa del directorio que contiene nuestros archivos (como en el caso anterior).

Espero este claro.
Saludos!
-
Miguel Angel
Mike79
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Funcion 'file_exists'

Publicado por Edu (3 intervenciones) el 21/06/2005 18:45:36
Hola,

Ante todo gracias por la respuesta. Seria una ruta absoluta ya que $row->url, contiene la URL de un enlace, por ejemplo http://www.philips.es (incluyendo siempre el http://, dato importante. Por lo tanto, la variable direccion es http://www.philips.es/favicon.ico.
De hecho puse la linea de codigo del 'if' dentro del 'else' para probarlo y funciona, de tal manera que me muestra los iconos de los enlaces en los cuales existe el favicon.ico en la carpeta raiz... pero claro, me deja en blanco los que no existen dejando ese aspa tan 'antiestetica'.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar