Foros del Web » Programando para Internet » PHP »

Include con variable por parametro

Estas en el tema de Include con variable por parametro en el foro de PHP en Foros del Web. Buenas, la consulta es simple, no estoy pudiendo incluir un fichero mediante include_once, donde la ruta esta almacenada en una variable. Este es el código: ...
  #1 (permalink)  
Antiguo 06/01/2012, 15:47
Avatar de ramiro_md  
Fecha de Ingreso: septiembre-2008
Mensajes: 274
Antigüedad: 15 años, 7 meses
Puntos: 26
Include con variable por parametro

Buenas, la consulta es simple, no estoy pudiendo incluir un fichero mediante include_once, donde la ruta esta almacenada en una variable.
Este es el código:
Código PHP:
include_once($_SESSION['confPath']); 
Y al volcar la ruta a secas tampoco funciona:
Código PHP:
include_once('http://localhost/web2.0/resources/config.conf.php'); 
Alguna idea ?.
  #2 (permalink)  
Antiguo 06/01/2012, 16:27
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Include con variable por parametro

Esa no es una ruta, es una URL.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 06/01/2012, 16:30
Avatar de ramiro_md  
Fecha de Ingreso: septiembre-2008
Mensajes: 274
Antigüedad: 15 años, 7 meses
Puntos: 26
Respuesta: Include con variable por parametro

Cita:
Iniciado por pateketrueke Ver Mensaje
Esa no es una ruta, es una URL.
Según el manual de PHP funciona del mismo modo:
Código PHP:
// Si funciona.
include 'http://www.example.com/file.php?foo=1&bar=2'
  #4 (permalink)  
Antiguo 06/01/2012, 16:53
webankenovi
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Include con variable por parametro

y asi que tal

Código PHP:
Ver original
  1. $ruta='/web2.0/resources/config.conf.php';
  2. include_once($ruta);
  #5 (permalink)  
Antiguo 06/01/2012, 16:58
Avatar de ramiro_md  
Fecha de Ingreso: septiembre-2008
Mensajes: 274
Antigüedad: 15 años, 7 meses
Puntos: 26
Respuesta: Include con variable por parametro

Cita:
Iniciado por webankenovi Ver Mensaje
y asi que tal

Código PHP:
Ver original
  1. $ruta='/web2.0/resources/config.conf.php';
  2. include_once($ruta);
Es que la ruta viene de un archivo de configuración. :(

Código PHP:
Ver original
  1. /* Directorio raiz del proyecto */
  2. $absPath = ($_SERVER['HTTP_HOST'] == "localhost") ? "http://localhost/web2.0" : "http://manantiales.edu.ar/web2.0";
  3. $confPath = "$absPath/resources/config.conf.php";
  #6 (permalink)  
Antiguo 06/01/2012, 17:00
webankenovi
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Include con variable por parametro

y como recojes la url ? en ese archivo de configuracion
  #7 (permalink)  
Antiguo 06/01/2012, 17:10
Avatar de ramiro_md  
Fecha de Ingreso: septiembre-2008
Mensajes: 274
Antigüedad: 15 años, 7 meses
Puntos: 26
Respuesta: Include con variable por parametro

Cita:
Iniciado por webankenovi Ver Mensaje
y como recojes la url ? en ese archivo de configuracion
Ok. Voy a tratar de explicarlo sin marear mucho al lector jeje.
El tema es así, en el directorio raíz del proyecto (web2.0), tengo los siguientes archivos php:
- index
- about
- login
- logout
- help

Cada uno incluye al config.conf.php por razones varias. Inclusión de archivos css, php y js.
El submit del login, pasa al archivo php con el que estoy teniendo problemas. Además de pasar todos los datos del formulario de logueo por POST, pasa una variable de sesion, con la dirección del archivo de configuración.
En el archivo que valido los datos lo llamo así, pero no anda.
Código PHP:
include_once($_SESSION['confPath']); 
  #8 (permalink)  
Antiguo 06/01/2012, 17:11
Avatar de Nemutagk
Colaborador
 
Fecha de Ingreso: marzo-2004
Ubicación: México
Mensajes: 2.633
Antigüedad: 20 años
Puntos: 406
Respuesta: Include con variable por parametro

por lo que veo el archivo a cargar siempre esta en el el mismo servidor que el archivo que lo esta llamando, si es así no veo la necesidad de manejarlo como un archivo remoto, aparte, recuerda que al llamar el archivo por medio del protocolo http, el servidor lo procesará y solo entregará la salida generada, si no genera salida, entregará un archivo en blanco
__________________
Listo?, tendría que tener 60 puntos menos de IQ para considerarme listo!!!
-- Sheldon Cooper
http://twitter.com/nemutagk
PD: No contestaré temas vía mensaje personal =)
  #9 (permalink)  
Antiguo 06/01/2012, 17:12
webankenovi
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Include con variable por parametro

OK pero esa (variable de sesion, con la dirección del archivo de configuración) como la recojes con que metodo

aqui http://es.php.net/manual/es/reserved...les.server.php puedes observar cual puede ser el mejor metodo para lo que quieres hacer , yo usaria para recojer $_SERVER['SCRIPT_FILENAME'] O $_SERVER['SCRIPT_NAME']

O la recojes manualmente o como le das valor a $_SESSION['confPath']

Última edición por webankenovi; 06/01/2012 a las 17:23
  #10 (permalink)  
Antiguo 06/01/2012, 17:29
Avatar de ramiro_md  
Fecha de Ingreso: septiembre-2008
Mensajes: 274
Antigüedad: 15 años, 7 meses
Puntos: 26
Respuesta: Include con variable por parametro

Cita:
Iniciado por webankenovi Ver Mensaje
OK pero esa (variable de sesion, con la dirección del archivo de configuración) como la recojes con que metodo

aqui http://es.php.net/manual/es/reserved...les.server.php puedes observar cual puede ser el mejor metodo para lo que quieres hacer , yo usaria para recojer $_SERVER['SCRIPT_FILENAME'] O $_SERVER['SCRIPT_NAME']

O la recojes manualmente o como le das valor a $_SESSION['confPath']
Ok. Este es todo le viaje que hace $_SESSION['confPath']:

config.php:
Código PHP:
$confPath "$absPath/resources/config.conf.php"
login.php:
Código PHP:
session_start();
include_once(
'resources/config.conf.php');
$_SESSION['confPath'] = $confPath
resources/library/login/login.php:
Código PHP:
session_start();
include_once(
$_SESSION['confPath']); 
Posiblemente mi problema, como menciona Nemutagk, es que no puedo encontrar la forma de referenciar al directorio raíz de mi proyecto, para generar inclusiones más facilmente.
Ya que $_SERVER['DOCUMENT_ROOT'] no me ha funcionado, tuve que recurrir a las direcciones por http.
  #11 (permalink)  
Antiguo 06/01/2012, 17:34
webankenovi
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Include con variable por parametro

cambiando el patch tendria que valer ya que tu llamas a un archivo de tu mismo directorio

$confPath = "/web2.0/resources/config.conf.php";

$absPath que valor trae?

y asi?

$confPath = $_SERVER['SERVER_NAME'].'/web2.0/resources/config.conf.php';
  #12 (permalink)  
Antiguo 06/01/2012, 17:42
Avatar de ramiro_md  
Fecha de Ingreso: septiembre-2008
Mensajes: 274
Antigüedad: 15 años, 7 meses
Puntos: 26
Respuesta: Include con variable por parametro

$absPath trae:
Código PHP:
Ver original
  1. $absPath = ($_SERVER['HTTP_HOST'] == "localhost") ? "http://localhost/lweb2.0" : "http://manantiales.edu.ar/web2.0";
  #13 (permalink)  
Antiguo 06/01/2012, 17:42
Avatar de Nemutagk
Colaborador
 
Fecha de Ingreso: marzo-2004
Ubicación: México
Mensajes: 2.633
Antigüedad: 20 años
Puntos: 406
Respuesta: Include con variable por parametro

O.o como que no te funciona DOCUMENT_ROOT, este siempre entregará el root del sitio, en tu caso seria...

Código PHP:
Ver original
  1. $confPath = $_SERVER['DOCUMENT_ROOT'].'/web2.0/resources/config.conf.php';

has un var_dump($_SERVER['DOCUMENT_ROOT'].'/web2.0/resources/config.conf.php'); y ve lo que arroja
__________________
Listo?, tendría que tener 60 puntos menos de IQ para considerarme listo!!!
-- Sheldon Cooper
http://twitter.com/nemutagk
PD: No contestaré temas vía mensaje personal =)
  #14 (permalink)  
Antiguo 06/01/2012, 17:45
webankenovi
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Include con variable por parametro

Cita:
Iniciado por ramiro_md Ver Mensaje
Es que la ruta viene de un archivo de configuración. :(

Código PHP:
Ver original
  1. /* Directorio raiz del proyecto */
  2. $absPath = ($_SERVER['HTTP_HOST'] == "localhost") ? "http://localhost/web2.0" : "http://manantiales.edu.ar/web2.0";
  3. $confPath = "$absPath/resources/config.conf.php";
Código PHP:
Ver original
  1. $absPath = ($_SERVER['SERVER_NAME'] == "localhost") ? "/web2.0" : "manantiales.edu.ar/web2.0";
  #15 (permalink)  
Antiguo 06/01/2012, 17:46
Avatar de ramiro_md  
Fecha de Ingreso: septiembre-2008
Mensajes: 274
Antigüedad: 15 años, 7 meses
Puntos: 26
Respuesta: Include con variable por parametro

Cita:
Iniciado por Nemutagk Ver Mensaje
O.o como que no te funciona DOCUMENT_ROOT, este siempre entregará el root del sitio, en tu caso seria...

Código PHP:
Ver original
  1. $confPath = $_SERVER['DOCUMENT_ROOT'].'/web2.0';
Ya intenté configurar el config.conf.php con DOCUEMNT_ROOT, pero al intentar incluir archivos me quedaban mal las rutas. Me buscaba desde donde estaba parado una carpeta "/public_hmtl/blablabla" y nunca incluía nada..
  #16 (permalink)  
Antiguo 06/01/2012, 17:48
webankenovi
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Include con variable por parametro

$_SERVER['SERVER_NAME'] arroja como resultado localhost o manantiales.edu.ar 100% seguro pruebalo yns cuentas
  #17 (permalink)  
Antiguo 06/01/2012, 17:49
Avatar de Nemutagk
Colaborador
 
Fecha de Ingreso: marzo-2004
Ubicación: México
Mensajes: 2.633
Antigüedad: 20 años
Puntos: 406
Respuesta: Include con variable por parametro

Cita:
Iniciado por ramiro_md Ver Mensaje
Ya intenté configurar el config.conf.php con DOCUEMNT_ROOT, pero al intentar incluir archivos me quedaban mal las rutas. Me buscaba desde donde estaba parado una carpeta "/public_hmtl/blablabla" y nunca incluía nada..
Pues por eso, así es como funciona DOCUMENT_ROOT, por eso mismo, has un var_dump como te eh dicho, creeme, funciona, infinidad de sitios hacen uso de dicha variable
__________________
Listo?, tendría que tener 60 puntos menos de IQ para considerarme listo!!!
-- Sheldon Cooper
http://twitter.com/nemutagk
PD: No contestaré temas vía mensaje personal =)
  #18 (permalink)  
Antiguo 06/01/2012, 17:50
Avatar de Nemutagk
Colaborador
 
Fecha de Ingreso: marzo-2004
Ubicación: México
Mensajes: 2.633
Antigüedad: 20 años
Puntos: 406
Respuesta: Include con variable por parametro

Cita:
Iniciado por webankenovi Ver Mensaje
$_SERVER['SERVER_NAME'] arroja como resultado localhost o manantiales.edu.ar 100% seguro pruebalo yns cuentas
Eso no le funcionará, porque al realizar una petición via http, el servidor procesará el archivo, es como si cargaras dicha pagina en el navegador, cuando haga el include el servidor entregará un archivo en blanco
__________________
Listo?, tendría que tener 60 puntos menos de IQ para considerarme listo!!!
-- Sheldon Cooper
http://twitter.com/nemutagk
PD: No contestaré temas vía mensaje personal =)
  #19 (permalink)  
Antiguo 06/01/2012, 17:51
webankenovi
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Include con variable por parametro

segun el manual para lo que tu quieres hay que usar server_name para la verificacion de el servidor

DOCUMENT_ROOT'
El directorio raíz de documentos del servidor en el cual se está ejecutando el script actual, según está definida en el archivo de configuración del servidor.

'SERVER_NAME'
El nombre del host del servidor donde se está ejecutando actualmente el script. Si el script se ejecuta en un host virtual se obtendrá el valor del nombre definido para dicho host virtual.

pero si el quiere cargar un archivo de su mismo servidor para que enviar por http mejor rutas que urls no?
  #20 (permalink)  
Antiguo 06/01/2012, 17:54
Avatar de ramiro_md  
Fecha de Ingreso: septiembre-2008
Mensajes: 274
Antigüedad: 15 años, 7 meses
Puntos: 26
Respuesta: Include con variable por parametro

var_dump:
Cita:
string(49) "/media/Datos/www/web2.0/resources/config.conf.php"
  #21 (permalink)  
Antiguo 06/01/2012, 17:56
webankenovi
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Include con variable por parametro

sinceramente yo lo haria asi

Código PHP:
Ver original
  1. $absPath = ($_SERVER['SERVER_NAME] == "localhost") ? "$confPath = "/web2.0/resources/config.conf.php" : $confPath = "http://manantiales.edu.ar/web2.0/resources/config.conf.php";;
  #22 (permalink)  
Antiguo 06/01/2012, 17:59
Avatar de Nemutagk
Colaborador
 
Fecha de Ingreso: marzo-2004
Ubicación: México
Mensajes: 2.633
Antigüedad: 20 años
Puntos: 406
Respuesta: Include con variable por parametro

compara el path que arroja DOCUMENT_ROOT con el path real en tu maquina, recuerda que en todo caso cuando llames a DOCUMENT_ROOT en tu caso será "/media/Datos/www", tomando esto en cuenta, agrega las carpetas necesarias hasta llegar al archivo de configuración, pero ojo, tendrás que tener la misma configuración de carpetas en tu localhost como en el servidor remoto
__________________
Listo?, tendría que tener 60 puntos menos de IQ para considerarme listo!!!
-- Sheldon Cooper
http://twitter.com/nemutagk
PD: No contestaré temas vía mensaje personal =)
  #23 (permalink)  
Antiguo 06/01/2012, 18:39
Avatar de ramiro_md  
Fecha de Ingreso: septiembre-2008
Mensajes: 274
Antigüedad: 15 años, 7 meses
Puntos: 26
Respuesta: Include con variable por parametro

Lo he resuelto.
La estaba fastidiando desde el config.conf.php.
El tema es así, cuando quiero incluir js y css el document root no me sirve, por eso uso la url.
Pero para archivos de inclusión, como clases y librerias, si me sirve.
Solo adapte el conf teniendo en cuenta eso que comenté, y salió andando todo.
Gracias por la paciencia.
Saludos.
  #24 (permalink)  
Antiguo 06/01/2012, 19:05
Avatar de Nemutagk
Colaborador
 
Fecha de Ingreso: marzo-2004
Ubicación: México
Mensajes: 2.633
Antigüedad: 20 años
Puntos: 406
Respuesta: Include con variable por parametro

que bueno que lo solucionaste, aunque, sinceramente, si hubieras comentado lo de css y js, hubiera sido mas rapido >.<
__________________
Listo?, tendría que tener 60 puntos menos de IQ para considerarme listo!!!
-- Sheldon Cooper
http://twitter.com/nemutagk
PD: No contestaré temas vía mensaje personal =)

Etiquetas: include, parametro, variables
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 07:54.