Foros del Web » Programando para Internet » PHP »

enlaces en los includes

Estas en el tema de enlaces en los includes en el foro de PHP en Foros del Web. Hola, estoy haciendo una nueva web y he empezado a utilizar includes para algunas zonas como por ejemplo la cabecera, esta cabecera tiene una imagen ...
  #1 (permalink)  
Antiguo 16/05/2005, 11:00
 
Fecha de Ingreso: enero-2003
Mensajes: 330
Antigüedad: 21 años, 2 meses
Puntos: 0
Pregunta enlaces en los includes

Hola, estoy haciendo una nueva web y he empezado a utilizar includes para algunas zonas como por ejemplo la cabecera, esta cabecera tiene una imagen y un menú horizontal.

Entonces ahora tengo un problemilla a la hora de organizar los ficheros y poner los enlaces en el menú del include de cabecera. A ver si consigo explicarme, los includes los he metido en un directorio, el include cabecera será llamado desde distintos ficheros, uno de ellos será el index, pero tambien desde otro ficheros que estarán a otro nivel dentro de un directorio, entonces me fallan los enlaces ya que si estoy en index,el link del include sería:
Código HTML:
<a href="categoria1/index.php">CATEGORIA1</a> 
mientras que si estoy en un fichero dentro de categoria2, el link del include sería
Código HTML:
<a href="../categoria1/index.php">CATEGORIA1</a> 
Lo mismo me pasaría con la url de la imagen de cabecera que está en el include.

Cual es la solución a esto? estoy utilizando bien los include? habría que poner rutas absolutas?

Saludos y gracias por anticipado
  #2 (permalink)  
Antiguo 16/05/2005, 11:14
Avatar de dwaks  
Fecha de Ingreso: agosto-2002
Ubicación: Panamá
Mensajes: 962
Antigüedad: 21 años, 8 meses
Puntos: 15
Bueno la solucion mas simple es:
<a href="http://www.tudominio.com/categoria1/index.php">CATEGORIA1</a>

Ponle la ruta completa.
  #3 (permalink)  
Antiguo 16/05/2005, 11:21
 
Fecha de Ingreso: enero-2003
Mensajes: 330
Antigüedad: 21 años, 2 meses
Puntos: 0
es eso lo que se suele hacer normalmente o es que mi organizacion de los ficheros y directorios no es del todo buena??
  #4 (permalink)  
Antiguo 16/05/2005, 11:37
Avatar de dwaks  
Fecha de Ingreso: agosto-2002
Ubicación: Panamá
Mensajes: 962
Antigüedad: 21 años, 8 meses
Puntos: 15
Eso es lo que se hace siempre es el metodo correcto cuando trabajas con includes dinamicos llamados de varias posiciones de folders.
  #5 (permalink)  
Antiguo 16/05/2005, 11:54
Avatar de Neuron_376  
Fecha de Ingreso: abril-2005
Mensajes: 1.051
Antigüedad: 19 años
Puntos: 2
humm..

Para las ligas, es mas recomendable hacerlo de forma normal, como:

Ahorita tienes:

href='archivo.php'

href ='ayuda/index.php'

Debe ser como:

href='/archivo.php'
href='/ayuda/archivo.php'

Es decir, no de forma absoluta pero si basada en el directorio raiz.

Suerte!!
__________________
NeuronaNet.com... la idea correcta.
http://www.NeuronaNet.com
  #6 (permalink)  
Antiguo 17/05/2005, 03:52
 
Fecha de Ingreso: enero-2003
Mensajes: 330
Antigüedad: 21 años, 2 meses
Puntos: 0
Pero tendría que poner por delante el nombre del directorio raíz, no? Es decir:

<a href="/directorio-raiz/index.php">INICIO</a>
  #7 (permalink)  
Antiguo 17/05/2005, 12:05
Avatar de Neuron_376  
Fecha de Ingreso: abril-2005
Mensajes: 1.051
Antigüedad: 19 años
Puntos: 2
Haz pruebas...

En ASP

/ = Directorio raiz

Es decir, si tu tienes un archivo en tu folder:

c:\Inetpub\wwwroot\archivo.asp

Para llegar a el desde cualquier punto, haces esto:

/archivo.asp

Donde

/ = c:\Inetpub\wwwroot\

Si por ejemplo, tienes un archivo en

c:\Inetpub\wwwroot\librerias\lib.asp

Para llegar a el desde cualquier punto, haces esto:

/librerias/lib.asp

Donde

/ = c:\Inetpub\wwwroot\

Y poner librerias porque es el camino iniicial.

Es la manera correcta de manejar ese caso, dependiendo de otros detalles usas otros metodos como el absoluto que te comentarion arriba, pero este seria el metodo correcto.

Suerte!!
__________________
NeuronaNet.com... la idea correcta.
http://www.NeuronaNet.com
  #8 (permalink)  
Antiguo 17/05/2005, 12:15
Avatar de dwaks  
Fecha de Ingreso: agosto-2002
Ubicación: Panamá
Mensajes: 962
Antigüedad: 21 años, 8 meses
Puntos: 15
OK tu ejemplo es asp?? cierto?? porfavor no confundas a los que inician en php con conceptos asp ya que el lenguaje varia completamente y su modalidad y uso.

Bulldog trabaja con el ejemplo que te di y todo quedara resuelto.

Ese es el modo que se usa para modulos completos y llamado de include e imagenes de forma dinamica.
  #9 (permalink)  
Antiguo 17/05/2005, 15:00
 
Fecha de Ingreso: enero-2003
Mensajes: 330
Antigüedad: 21 años, 2 meses
Puntos: 0
ok, lo haré como dices dwaks.

Muchas gracias
  #10 (permalink)  
Antiguo 17/05/2005, 15:26
Avatar de Neuron_376  
Fecha de Ingreso: abril-2005
Mensajes: 1.051
Antigüedad: 19 años
Puntos: 2
Ok...

Si me equivoque, pero igual funciona en PHP, solo que en el ejemplo que di, solamenete cambia c:\Inetpub\wwroot, por c:\apache\htdocs, o bien si estass en linux es otro folder, pero el ejemplo es el mismo, pero bueno, ahi lo dejo cualquier metodo no es que este mal o bien, pero es mas usado este que puse donde no te preocupas por tu dominio, porque?, porque sucede que si tienes varios dominios apuntando a tu servidor... como:

http://www.dominio1.com//
http://www.dominio2.com//

Cuando entras en base a dominio 1, si usas el metodo absoluto, siempre estaras llamando todo en base a dominio 1, y en tu barra arriba cambiaras siempre a usar el dominio 1, y eso es malo, porque cuando tienes dos dominios siempre quieres usar el mismo para ser congruente, bueno, yo lo veo asi, es un detalle nada mas.

Bueno, lo dejo como comentario nada mas, suerte!!
__________________
NeuronaNet.com... la idea correcta.
http://www.NeuronaNet.com
  #11 (permalink)  
Antiguo 18/05/2005, 04:18
 
Fecha de Ingreso: enero-2003
Mensajes: 330
Antigüedad: 21 años, 2 meses
Puntos: 0
Hola Neuron_376, es posible que lo esté haciendo mal pero no consigo hacerlo funcionar como me dices, o al menos como creo entenderlo. A ver, te cuento lo que hago:

Al mismo nivel tengo index.php, y los directorios: includes, images, y chistes. Dentro del directorio chistes tengo otro index.php

En index.php tengo puesto:
Código PHP:
include("includes/cabecera.php"); 
En chistes/index.php tengo:
Código PHP:
 include("../includes/cabecera.php"); 
En cabecera.php es donde me viene el problema, donde pongo:
Código HTML:
<img src="/images/cabecera12.jpg" width="740" height="140"> 
y tambien:
Código HTML:
<a href="/chistes/index.php">CHISTES</a> 

De esta manera, no funciona correctamente.
  #12 (permalink)  
Antiguo 18/05/2005, 04:23
Avatar de caerolus  
Fecha de Ingreso: agosto-2004
Ubicación: Madrid, España
Mensajes: 280
Antigüedad: 19 años, 8 meses
Puntos: 1
Vamos a ver. No confundamos la raíz en php con la raíz de html. Me explico:
Si en un script de php ponemos, por ejemplo include("/directorio/achivo.xxx"); nos irá a la raíz de php, que es la raíz del sistema de archivos del servidor. Esto no será lo mismo que, por ejemplo: /usr/docs/html/dominio/directorio/archivo.xxx, suponiendo que tu web la tengas en el directorio /usr/docs/html/dominio/.
Ahora bien, si pones la raíz / en html, ser refiere a la raíz de tu dominio. Si pones href="/directorio/archivo.xxx" te irá a /usr/docs/html/dominio/directorio/archivo.xxx, que realmente es lo que querías.
Es decir: si nuestra web está en el directorio /usr/docs/html/dominio/ del disco duro, / en php no nos vale para esto, pero / en html sí, porque lo hará desde el mismo sitio donde tienes tu web. El servidor ya se encarga de sustituir el http://www.dominio.com por /usr/docs/html/dominio/, si así lo entiendes mejor.
Total, que puedes poner href="/categoria1./index.html" sin ningún problema, porque ese path es de html.
No sé si me he explicado bien. Saludos
__________________
Mi página personal: Julián Urbano
  #13 (permalink)  
Antiguo 18/05/2005, 08:56
 
Fecha de Ingreso: junio-2004
Mensajes: 101
Antigüedad: 19 años, 10 meses
Puntos: 0
Información Re:

Hola:

La verdad es que yo siempre utilizaria rutas relativas y no absolutas para tus includes, si tienes problemas con los includes es porque debes tener mal organizadas tus carpetas y archivos.... debes tener en cuenta que siempre que se trabaja con includes es preferible tener esos archivos (en tu caso la cabecera) en el directorio raiz y desde cualquier directorio que llames a la cabecera podras hacerlo con ruta relativa ademas si tienes una imagen u otro codigo en tu cabecera puedes guardarla en directorios y ser llamados desde tu cabecera a pesar de que llames a la cabecera desde diferentes rutas....

Organiza mejor la estructura de tu WEB (teniendo encuenta los INCLUDES) y tendras mejores resultados

Saludos
  #14 (permalink)  
Antiguo 18/05/2005, 09:27
Avatar de Neuron_376  
Fecha de Ingreso: abril-2005
Mensajes: 1.051
Antigüedad: 19 años
Puntos: 2
Hola...

Estoy de acuerdo con los ultimos dos comentarios que te pusieron, y mira, si, lo que te mencionabas arriba eran cosas de ligas, lo cual esta bien como te lo decia, para los includes es cierto, en PHP he encontrado ese error de que / no te lleva a la raiz de tu sitio, lo cual esta mal, sigue siendo un error, y me parece que lo puedes corregir directo en el PHP.INI, pero por cuestiones generales para hosting rentados donde no puedes manipular el PHP.INI, el problema lo he solucionado así:

$raiz = $_SERVER['DOCUMENT_ROOT'];
include($raiz . "/librerias/lib1.php")

A grandes rasgos asi lo tengo, y ese sistema ha funcionado perfecto en todos los servidores de PHP.

Suerte!!

ANEXO: Existen variaciones, por ejemplo, en un hosting rentado donde tu ROOT es www/tuespacio/, el ROOT te regresara solamente www/, ahi tu tienes que agregar la parte de /tuespacio, algo como:

$raiz = $_SERVER['DOCUMENT_ROOT'] . "/tuespacio";
include($raiz . "/librerias/lib1.php")

En fin, segun tu caso, pero ese seria el sistema mas adecuado.

Suerte!!
__________________
NeuronaNet.com... la idea correcta.
http://www.NeuronaNet.com
  #15 (permalink)  
Antiguo 19/05/2005, 05:24
 
Fecha de Ingreso: enero-2003
Mensajes: 330
Antigüedad: 21 años, 2 meses
Puntos: 0
Al final he puesto los includes en el directorio raiz.

Muchas gracias a todos por ayudarme, seguro que en breve vuelvo a molestaros ;)
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 09:24.