Foros del Web » Programando para Internet » PHP »

Mis variables no se propagan

Estas en el tema de Mis variables no se propagan en el foro de PHP en Foros del Web. Hola a todos: El caso es el siguiente: Tengo la siguiente estructura de ficheros: index.php includes/init.inc includes/topmenu.php init.inc Código PHP: <?php $MODULES_DIR  =  $website . ...
  #1 (permalink)  
Antiguo 17/03/2005, 10:08
 
Fecha de Ingreso: junio-2003
Mensajes: 26
Antigüedad: 20 años, 10 meses
Puntos: 0
Mis variables no se propagan

Hola a todos:
El caso es el siguiente:
Tengo la siguiente estructura de ficheros:

index.php
includes/init.inc
includes/topmenu.php

init.inc
Código PHP:
<?php
$MODULES_DIR 
$website."modules/";
$INCLUDES_DIR $website."includes/";
$IMAGES_DIR $website."images/";
$TEMPLATES_DIR $website."templates/";
$LANG_DIR $website."lang/";
$ICONS_DIR $website."icons_themes/";
$ICON_THEME $ICONS_DIR.$icon_theme."/";
$TXT_DB_API_FILE $DOCUMENT_ROOT "/tebas/includes/dbclass/txt-db-api.php";
include(
$TXT_DB_API_FILE);
?>

index.php
Código PHP:
<?php
require('./config.php');
require(
'./includes/init.inc');

include(
$INCLUDES_DIR.'topmenu.php');
?>

topmenu.php
Código PHP:
<?php
$db 
= new Database("tebas");
?>
pues topmenu.php me da un error porque dice que no existe la clase Database, que es una clase definida en el archivo que corresponde a la variable $TXT_DB_API_FILE. Si hago en topmenu un include al fichero init.inc, todo se resuelve, de lo contrario, nada funciona, y según tengo entendido eso no debiera ser así, si lo tengo incluido en index.php, debería funcionar.

Please help!

NeOnsKuLL
  #2 (permalink)  
Antiguo 17/03/2005, 10:33
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
LLama a tu init.inc com init.inc.php . . para que sea ejecutable .. así evitaras que si lo llamo directo por el URL vea el código (eso a nivel de seguridad .. tampoco sé realmente donde lo ubicas en tu servidor ni si tienes otro tipo de protección).

Por otro lado .. cuando haces un "include" las variables no se propagan sino que tu código se vá componiendo con todas las partes de tu código que llamas externo. Todo "junto" (digamos "virtualmente en memoria") se ejecuta como una sóla entidad.

El problema que tienes tal vez es del orden que llamas a tus scripts para incluirlos .. no sé que hace config.php ni en que interactua con los otros .. pero ... si piensas en lo que te he comentado sobre que todo se ejecuta como una sóla entidad cuando "se mezcle" todo el código que vas llamando ..podrías ver donde tienes tu fallo concreto ..

Un saludo,
  #3 (permalink)  
Antiguo 17/03/2005, 10:55
 
Fecha de Ingreso: junio-2003
Mensajes: 26
Antigüedad: 20 años, 10 meses
Puntos: 0
Cita:
Por otro lado .. cuando haces un "include" las variables no se propagan sino que tu código se vá componiendo con todas las partes de tu código que llamas externo. Todo "junto" (digamos "virtualmente en memoria") se ejecuta como una sóla entidad.
Es exactamente eso lo que siempre he pensado.

Ya encontré el problema. Estaba en que estaba haciendo el include de la siquiente manera:
Tenía una variable $includes_dir = "http://localhost/includes/";
Y luego hacía el include así: include($includes_dir . 'topmenu.php');

Y como el include de topmenu.php estaba hecho por http, las variables no lo alcanzan a él, o sea, que efectivamente, no se propagan las variables a él.

Gracias Cluster

NeOnsKuLL
  #4 (permalink)  
Antiguo 17/03/2005, 11:17
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
El problema de hacer llamadas HTTP mas bien es de que ese código se ejecuta y lo que obtienes es su salida:

$includes_dir = "http://localhost/includes/";

no el "código" PHP para ejecutarlo como una entidad ..Para eso debes hacer llamadas "relativas" a tus archivos .. sin el HTTP .. Para eso ya conoces la variable de servidor: $DOCUMENT_ROOT que te devuelve la ruta absoluta de tu sitio en ese servidor par que a partir de ella añadas la tuya de tu aplicación/sitio

Un saludo,
  #5 (permalink)  
Antiguo 17/03/2005, 11:26
 
Fecha de Ingreso: junio-2003
Mensajes: 26
Antigüedad: 20 años, 10 meses
Puntos: 0
tenía que haberte dicho que usar $DOCUMENT_ROOT fue lo que hice para resolverlo.

Gracias una vez más

NeOnsKuLL
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 15:10.