Cita de: Universal SAC en 8 Noviembre 2007, 06:20 AM
Ahh, ya entendí cual es el problema. El problema es que no sabes lo que hace el valor "register_globals". No se trata de evitar las variables globales en los codigos, sino de evitar que las variables globales fueran tomadas (y registradas) desde cualquier forma de entrada de datos.
Osea que si alguien enviaba la variable OK como post, o como get, o como cookie... modificaría el valor de la variable $ok de tu codigo. (eso es con register_globals activado). Y ahora con register_globals desactivado, las variables globales vienen con una sintaxis más completa y estricta, si envian OK por get, el valor estará en $_GET['ok'] y será diferente a una variable global $ok que tengas en el código.
Por lo que el último ejemplo que colocaste, se soluciona agregando en la función conectar() (que deduzco se encuentra en "funciones_bbb.php") una linea de este tipo:
global $user, pass, $user_db; //y todas las que quieras
Quedando así:
//en funciones_bbb.php
function conectar(){
global $user_db,$pass_dv,$server,$base_dd;
$con=mysql_connect($server,$user_db,$pass_dv);
$link=mysql_select_db($base_dd,$con);
return $link
}
Saludos
EDITO: Si es necesario, también hay que declarar las variables como globales en config.php. En mi caso, no fue necesario...
Nop....
La unica diferencia que existe al tener register_globals activado o desactivado, es que:
register_globals= on
Las variables que se transportan de una pagina hacia otra (ejemplo: un formulario), pueden ser consultadas directamente: echo $variable; y estaran disponibles en las funciones que invoques...
register_globals= off
Las variables que se transportan de una pagina hacia otra (ejemplo: un formulario), podran ser consultadas siempre y cuando el formulario este en method=POST, y seran accesibles por $_POST["variable"], posteriormente las variables invocadas desde un enlace (<a href="variable=X">), seran tratadas con $_GET["variable"] y estas NO trascenderan hacia las otras hojas.
Por lo que, si creas un archivo .php el cual INCLUYES despues, las variables que tengas en dicho ARCHIVO PHP (config.php) no estaran disponibles dentro de las FUNCIONES !!...
Nose si me entiendas o sabes un poco de variables GLOBALES y NO GLOBALES....
Una variable global esta disponible en TODAS partes (siempre y cuando este incluida al inicio)....
Una variable no global solo estara disponible dentro del pedazo de codigo en donde se invoco la variable, y si accedes a una FUNCION, las variables no existiran debido a que son solo LOCALES.
En conclusion, declarar:
Código [Seleccionar]
global $user, pass, $user_db;
Es un poco anti etico, debido a que las variables GLOBALES son PELIGROSAS en cuestiones de INYECCION/EXTRACCIO DE CODIGO... En cambio, una variable DEIFNIDA es como una varable ESTATICA, la cual se diferencia poque no tiene el simbolo de $ al inicio...