Duda para manejar variables cuando 'register_globals=off' !!

Iniciado por Diabliyo, 8 Noviembre 2007, 04:35 AM

0 Miembros y 1 Visitante están viendo este tema.

Diabliyo

Este es el codigo de mi software...

<?php
/*
OneFloor-PHP :: Sistema Base para iniciar tus proyectos en PHP

Codigo Fuente del sistema case para iniciar tus proyectos en PHP, con la finalidad de ser el primer
esclaron en la creacion de proyectos basados en el lenguaje de programacion web PHP. Este codigo queda
reservado a los Derechos del Autor con su respectiva Licencia Copyright. De modo que, cualquier alteracion, uso ilegal o publicacion debe ser tal cual esta, conservando los derechos del mismo.

Autor: Angel Cantu Jauregui
Nick: Diabliyo
Web: http://www.sie-group.net/
Blog: http://elite-mexicana.blogspot.com/
Foro: http://foro.sie-group.net/
MSN: darkdiabliyo@hotmail.com
E-Mail: darkdiabliyo@gmail.com
*/

include( "modulos/modulos.php" ); //este modulo llama a todos los modules existentes
?>

<html>
<head>
<title>Espacio Web Diabliyo</title>
<link href="templates/uat-rural/css/estilo.css" type="text/css" rel="stylesheet">
<style rel="stylesheet" type="text/css">
.letras
{
font-family:verdana;font-size:12px;color:black;
}
.letras a
{
font-family:verdana;font-size:12px;color:black;font-decoration:none;
}
.letra a:visited
{
font-family:verdana;font-size:12px;color:black;font-decoration:none;
}
</style>
</head>

<body>
<?php
echo 
"<table cellspacing=\"0\" cellpadding=\"0\" align=\"center\" id=\"tabla_general\">";

if( $base_user && $base_pass && $base //si las variables tienen un VALOR accede
$linkconectar();
else //si las variables estan VACIAS entonces accede AQUI
$link="INSTALL";

if( $link=="INSTALL" )
include( "install.php" ); //instalar el software

else if( $link //mostrar pagina segun el tema existente
{
include( "templates/uat-rural/cuerpo/logos.php" );
include( "templates/uat-rural/cuerpo/menus.php" );
include( "templates/uat-rural/cuerpo/noticias.php" );
include( "templates/uat-rural/cuerpo/extras.php" );
include( "templates/uat-rural/cuerpo/firma.php" );
}

mysql_close$link );

echo "</table>";
?>

</body>
</html>


Esto es un poco de codigo del archivo modulos.php

<?php
include( "admin/config.php" ); //aqui estan las VARIABLES
include( "base.php" ); //funciones para base de datos
include( "noticias.php" ); //modulo para noticias
..... //mas modulos
?>


El problema como se puede detectar es que despues de instalarse la aplicacion, JAMAS muestra la pagina, SIEMPRE pone el formulario de instalar aplicacion (install.php) debido a que 'register_globals=Off', de modo que las variables contenidas en config.php no pueden ser utilizadas en las FUNCIONES para conectar a la Base de Datos :( !!....

He intentado hacer lo que dice Universal SAC, y segun quedo asi el archivo 'modules.php':

<?php
global $user_db$pass_db$server$base//esas son las variables contenidas en el archivo config.php

include( "admin/config.php" ); //aqui estan las VARIABLES
include( "base.php" ); //funciones para base de datos
include( "noticias.php" ); //modulo para noticias
..... //mas modulos
?>


Que me sugieren hacer ???.....

Ya que el archivo config.php debe tener esta notacion:

<?php
$base_user
="diabliyo";
$base_pass="angelsrln";
$server="localhost";
$base="prueba";
?>

alone-in-the-chat

Podria usar variables de session mete tus variables en variables de Session y despues con un extract()
encima de cada script te evitas estar modificando una x una todas las funciones que llaman a esas variables

Saludos
Because maybe
You're gonna be the one that saves me
And after all
You're my wonderwall
d[n_n]b

Diabliyo

Hola:

Gracias por tu aportacion, pero si las metiece en variables de sesion, tendria al final que crear siempre 5 variables de sesion :S... 4 variables de sesion que son las necesarias para consultar la BDD y 1 variable para la sesion dle usuario...

Nop... no lo creo conveniente..

Me gustaria mejor utilizar variables definidas...

Alguien sabe algun comando para INVOCAR las variables EXISTENTES o creadas por mi ??... a su ves el VALOR de dichas variables ??

NOTA: me refieron avariables creadas de este tipo: define( var, "dato" );

bye bye

alone-in-the-chat

Bueno cada uno usa lo que le parezca ams conveniente  :D

A tu pregunta

a lo mejor esta funcion es lo que deseas

http://www.php.net/manual/en/function.get-defined-constants.php

fijate en la parte de la matriz que contiene las constantes definidas x el usuario

Saludos
Because maybe
You're gonna be the one that saves me
And after all
You're my wonderwall
d[n_n]b

Diabliyo

Hola:

Realize la invocacion de la funcion que me indicaste de esta manera print_r( get_defined_constants() );, y me envia un monton de variables definidas con sus valores, y solamente HASTA EL FINAL aparecen las MIAS, pero no encuentro la manera de aceder a ellas :( !!... Aqui te dejo lo que me mostro (no todo... solo lo ultimo)

[MYSQL_CLIENT_IGNORE_SPACE] => 256
[base_user] => diabliyo
[base_pass] => 1234
[server] => localhost
[base] => prueba )


No encuentro la manera de acceder a los valores ni a los nombres... alguien que me pueda ayudar ??

Gracias de antemano alone-in-the-chat...

bye bye

alone-in-the-chat

kreo que asi iria la cosa

Código (php) [Seleccionar]

$Matriz = get_defined_constants();
$DatosConexion = $Matriz['user'];
$base_user = $DatosConexion['base_user'];
$base_pass = $DatosConexion['base_pass'];
$base = $DatosConexion['base'];
$server = $DatosConexion['server'];


No lo eh probado pero debe de funcionarte


Saludos
Because maybe
You're gonna be the one that saves me
And after all
You're my wonderwall
d[n_n]b

Diabliyo

Cita de: alone-in-the-chat en  8 Noviembre 2007, 19:08 PM
kreo que asi iria la cosa

Código (php) [Seleccionar]

$Matriz = get_defined_constants();
$DatosConexion = $Matriz['user'];
$base_user = $DatosConexion['base_user'];
$base_pass = $DatosConexion['base_pass'];
$base = $DatosConexion['base'];
$server = $DatosConexion['server'];


No lo eh probado pero debe de funcionarte


Saludos


Sip, asi como lo dices SI funciona y me parece bien (de echo ya lo hice asi jejeje).. pero en este ejemplo que PLANTEAS, de antemano sabes CUALES SON LAS VARIABLES, en caso que se agregen nuevas variables DEFINIDAS habria que modificar el codigo fuente y sera complicado hacer eso a cada rato que se actualize la aplicacion...

Existe alguna forma de tomar el puro NOMBRE de las variables definidas ??, esto con el fin de saber CUANTAS VARIABLES definidas existen por el usuario y creadas por mi ??

Gracias de antemano :D !!

bye bye

alone-in-the-chat

usa foreach para recorrer el array $DatosConexion


Saludos
Because maybe
You're gonna be the one that saves me
And after all
You're my wonderwall
d[n_n]b

Diabliyo

Hola:

Listo, nome gusto mucho pero finalmente deje asi la funcion que crea el archivo config.php.

function crear_config()
{
$raiz= getcwd(); //tomamos directorio actual

chdir( "admin/" ); //nos movemos al directorio 'admin/'

$buf_salida=""; //variable buffer

if( !($fp= fopen( "config.php", "w" )) ) //abrimos archivo en modo escritura
{
chdir( $raiz );
echo "<span id=\"letras_error\">Error 06: Problema para Crear Archivo de Configuracion. (2)</span><br>";
return 0;
}

else //en caso de exito de la apertura
{
$var_post[0]= $_POST["install_mysqlusername"];
$var_post[1]= $_POST["install_mysqlpassword"];
$var_post[2]= $_POST["install_dominio"];
$var_post[3]= $_POST["install_bd"];

$buf_salida= "<?php\n"; //inicializamos etiqueta

$buf_salida .= "definebase_user, \""$var_post[0]. "\" );\n";
$buf_salida .= "define( base_pass, \""$var_post[1]. "\" );\n";
$buf_salida .= "define( server, \""$var_post[2]. "\" );\n";
$buf_salida .= "define( base, \""$var_post[3]. "\" );\n";
$buf_salida .= "?>
"; //finalizamos etiqueta

if( fwrite( $fp, $buf_salida )== FALSE ) //escribimos la variable directo y completa en el archivo
{
echo "<span id=\"letras_error\">Error 08: Problema para Escribir informacion al Archivo de Configuracion.</span><br>";
fclose( $fp );
chdir( $raiz );
return 0;
}

else //en caso de exito en la escritura
{
unset($buf_salida);
chdir( $raiz );
fclose( $fp );
return 1;
}
}
}

alone-in-the-chat

Because maybe
You're gonna be the one that saves me
And after all
You're my wonderwall
d[n_n]b