elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Rompecabezas de Bitcoin, Medio millón USD en premios


+  Foro de elhacker.net
|-+  Programación
| |-+  Desarrollo Web
| | |-+  PHP (Moderador: #!drvy)
| | | |-+  Duda para manejar variables cuando 'register_globals=off' !!
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: 1 2 [3] Ir Abajo Respuesta Imprimir
Autor Tema: Duda para manejar variables cuando 'register_globals=off' !!  (Leído 11,896 veces)
Diabliyo


Desconectado Desconectado

Mensajes: 1.441


shell# _


Ver Perfil WWW
Re: Duda para manejar variables cuando 'register_globals=off' !!
« Respuesta #20 en: 8 Noviembre 2007, 23:51 pm »

Hola:

Asi es, ya las modifique a mayusculas...

Ya todo rula perfecto, excepto que veo un inconveniente el cual nose porque NO puedo acceder a las variables DEFINIDAS :S... El problema va asi:

1- accedo al sitio y me logeo... Al logearme creo la SESSION y consulto en la Base de Datos si existe el USER y PASSWORD, posteriormente al ser validos los datos muestro el panel de control del usuario, todo esto funciona PERFECTO...

2- Como YO tengo mi login de ADMINISTRADOR, me muestro una opcion que dice: Panel de Control, al dar CLICK en dicho link accedo a OTRA index.php ubicada en: http://localhost/admin/index.php (ya que tengo PHP y Apache en mi propio PC)...

Esto es un poco de codigo del admin/index.php

Código:
<?php
include( "../modulos/modulos.php" );
?>

<html>
<head>
<title>Panel de Control -- Administracion del Sitio</title>
<link type="text/css" rel="stylesheet" href="css/estiloadmin.css">
</head>

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

//si las SESSIONEs existen, entonces esta logeado.
if( $_SESSION["log_usr"] && $_SESSION["log_pwd"] )
{
//concatenamos
$var= "nick=";
$var .= "'". $_SESSION["log_usr"]. "'";
$var .= ":password=";
$var .= "'". $_SESSION["log_pwd"]. "'";

$cons= consultar_con( "USUARIOS", $var ); //consultamos los datos de la session

if( $cons=="ERROR" ) //error, entonces la SESSION es falsa
echo "<td colspan=\"2\">Login Incorrecto.<p>Base User: ". SERVER. "</td><tr>";

else if( mysql_num_rows( $cons )==0 ) //entonces la SESSION es FALSA
echo "<th>En Construccion</th><tr>";

else //la SESSION es correcta y mostramos PANEL y mas Cosas del Usuario
{
$datos= mysql_fetch_array( $cons );

if( $datos["TIPO_USR"]=="Administrador" )
{
include( "push_modulos.php" );
include( "area_work.php" );
}
else
echo "<td>Acceso Restringido a solo Colaboradores/Administradores</td>";
}
unset( $cons );
unset( $datos );
unset( $var );
}
else
echo "<td>Acceso Restringido a solo Colaboradores/Administradores</td>";

echo "</table>";
?>
</body>
</html>

Y este es el codigo de modulos.php

Código:
<?php
session_start(); //tomamos la session o creamos

include( "admin/config.php" ); //variables
include( "base.php" ); //funciones BDD
include( "noticias.php" ); //funciones
?>

Codigo de la funcion conectar()

Código:
function conectar()
{
if( !($link= mysql_connect( "". SERVER. "", "". BASE_USER. "", "". BASE_PASS. "" )) )
{
echo "<span id=\"letras_error\">Error 01: Error para Conectarse a MySQL.<br>";
echo "Error en Usuario y/o Contrase&ntilde;a.<br>";
echo mysql_error($link). "</span>";
$link= "INSTALL";
}
else if( !mysql_select_db( "". BASE. "", $link ) )
{
echo "<span id=\"letras_error\">Error 02: Problemas para Tomar la Base de Datos.<br>";
echo "No se Encuentra la Base de Datos.<br>";
echo mysql_error($link). "</span>";
$link= "INSTALL";
}
return $link;
}

EL PROBLEMA
Es que NO puedo realizar consultas ni conectarme a la Base de Datos, nose porke :S...  posteriormente trato de imrpimir los valores de las variables de config.php y no puedo acceder a ellas !!

Porque sera ??

bye bye


« Última modificación: 8 Noviembre 2007, 23:53 pm por Diabliyo » En línea

Hans el Topo


Desconectado Desconectado

Mensajes: 1.754


"Estoy cansado de no hacer nada"


Ver Perfil WWW
Re: Duda para manejar variables cuando 'register_globals=off' !!
« Respuesta #21 en: 9 Noviembre 2007, 00:19 am »

en parte es como dice SAC

si tienes en off php no te construye variables con los valores de $_SERVER, $_GET, $_POST, $_COOKIE, $_FILES, $_ENV, $REQUEST y $_SESSION
si lo tienes a on si lo hace

... no tiene más misterio, lo otro es igual en ambos casos porque no tiene nada que ver


Si tiene mucho que ver, porke las variables se vuelven LOCALES y para transportarlas a una funcion se deben incluir como argumento.

no se vuelven locales porque siempre las tienes disponibles ya sea via $_POST["variable"]


En línea

alone-in-the-chat


Desconectado Desconectado

Mensajes: 587


Ver Perfil
Re: Duda para manejar variables cuando 'register_globals=off' !!
« Respuesta #22 en: 9 Noviembre 2007, 00:19 am »

Me parece que estas colocando las constantes como cadenas

Código
  1. if( !($link= mysql_connect( "". SERVER. "", "". BASE_USER. "", "". BASE_PASS. "" )) )
  2.  


Creo que deberia ser asi

Código
  1. if( !($link= mysql_connect( SERVER,  BASE_USER,  BASE_PASS )) )
  2.  

Je no lo eh probado pero sospecho que seria asi


Saludos
En línea

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

Desconectado Desconectado

Mensajes: 41


Universal SAC


Ver Perfil
Re: Duda para manejar variables cuando 'register_globals=off' !!
« Respuesta #23 en: 9 Noviembre 2007, 04:13 am »

Espero no interrumpir.

Citar
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 sad !!....

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

Código:

<?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
?>

Entiendo que ya estás utilizando otro método, pero no veo "de más" el dejar ese tema. El problema ahí, fue que la declaración GLOBAL no se realizó en el lugar adecuado... hay que agregarlo DENTRO de cada función! Si en base.php tienes la función CONECTAR (u otras) tienes que agregar
global $user_db,$pass_db//blabla
ADENTRO de la función... quedando así:

function conectar(){
     global 
$user_db,$pass_db,$server,$base;
     
$link=mysql_con...............................................
     .............................
     return 
$link;

Si en otro archivo tienes otra función, pues hay que hacer la misma declaración de global a las variables que desees utilizar. De hecho, si index.php incluye a config.php, no es necesario que modules.php (que también es incluido por index) contenga la declaración
global $user_db,$pass_db//blabla
...

Entonces, faltaba hacer la declaración de globales en cada función de cada archivo que utilizase las variables.

Saludos.
En línea

~UNIVERSAL[HACK]
Diabliyo


Desconectado Desconectado

Mensajes: 1.441


shell# _


Ver Perfil WWW
Re: Duda para manejar variables cuando 'register_globals=off' !!
« Respuesta #24 en: 9 Noviembre 2007, 22:59 pm »

Espero no interrumpir.

Citar
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 sad !!....

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

Código:

<?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
?>

Entiendo que ya estás utilizando otro método, pero no veo "de más" el dejar ese tema. El problema ahí, fue que la declaración GLOBAL no se realizó en el lugar adecuado... hay que agregarlo DENTRO de cada función! Si en base.php tienes la función CONECTAR (u otras) tienes que agregar
global $user_db,$pass_db//blabla
ADENTRO de la función... quedando así:

function conectar(){
     global 
$user_db,$pass_db,$server,$base;
     
$link=mysql_con...............................................
     .............................
     return 
$link;

Si en otro archivo tienes otra función, pues hay que hacer la misma declaración de global a las variables que desees utilizar. De hecho, si index.php incluye a config.php, no es necesario que modules.php (que también es incluido por index) contenga la declaración
global $user_db,$pass_db//blabla
...

Entonces, faltaba hacer la declaración de globales en cada función de cada archivo que utilizase las variables.

Saludos.

Ok... tu opcion es valida y funcional, pero yo lo que quiero es evitar el echo de estar declarando lo que tu mencionas, ya que son muchas funciones y bstantitos archivo .php :D !!...

En fin, al parecer va todo bien con CONSTANTES !!
En línea

Diabliyo


Desconectado Desconectado

Mensajes: 1.441


shell# _


Ver Perfil WWW
Re: Duda para manejar variables cuando 'register_globals=off' !!
« Respuesta #25 en: 9 Noviembre 2007, 23:00 pm »

en parte es como dice SAC

si tienes en off php no te construye variables con los valores de $_SERVER, $_GET, $_POST, $_COOKIE, $_FILES, $_ENV, $REQUEST y $_SESSION
si lo tienes a on si lo hace

... no tiene más misterio, lo otro es igual en ambos casos porque no tiene nada que ver


Si tiene mucho que ver, porke las variables se vuelven LOCALES y para transportarlas a una funcion se deben incluir como argumento.

no se vuelven locales porque siempre las tienes disponibles ya sea via $_POST["variable"]

Creo que no sabes de variables globales y no globales... Las variables no pueden estar disponibles por $_POST[], porke no trascienden hacia las fucniones.... pruebalo tu mismo, instalate Apache+PHP y desactiva register_globals !!

bye bye
En línea

Diabliyo


Desconectado Desconectado

Mensajes: 1.441


shell# _


Ver Perfil WWW
Re: Duda para manejar variables cuando 'register_globals=off' !!
« Respuesta #26 en: 9 Noviembre 2007, 23:03 pm »

Me parece que estas colocando las constantes como cadenas

Código
  1. if( !($link= mysql_connect( "". SERVER. "", "". BASE_USER. "", "". BASE_PASS. "" )) )
  2.  


Creo que deberia ser asi

Código
  1. if( !($link= mysql_connect( SERVER,  BASE_USER,  BASE_PASS )) )
  2.  

Je no lo eh probado pero sospecho que seria asi


Saludos

No creo que tenga eso que ver, porke desde que INSTALO la aplicacion, utilizo esa misma funcion de conectar() durante la instalacion y para coprobar los USERNAME al momento de logearme al software.. El problema es en el panel del administrador (admin/index.php), no puede conectarse :S !!....

Seguire buscando, si tengo respuesta pues publicare el resultado !!

Gracias de antemano !!

bye bye
« Última modificación: 9 Noviembre 2007, 23:05 pm por Diabliyo » En línea

Hans el Topo


Desconectado Desconectado

Mensajes: 1.754


"Estoy cansado de no hacer nada"


Ver Perfil WWW
Re: Duda para manejar variables cuando 'register_globals=off' !!
« Respuesta #27 en: 10 Noviembre 2007, 00:32 am »

en parte es como dice SAC

si tienes en off php no te construye variables con los valores de $_SERVER, $_GET, $_POST, $_COOKIE, $_FILES, $_ENV, $REQUEST y $_SESSION
si lo tienes a on si lo hace

... no tiene más misterio, lo otro es igual en ambos casos porque no tiene nada que ver


Si tiene mucho que ver, porke las variables se vuelven LOCALES y para transportarlas a una funcion se deben incluir como argumento.

no se vuelven locales porque siempre las tienes disponibles ya sea via $_POST["variable"]

Creo que no sabes de variables globales y no globales... Las variables no pueden estar disponibles por $_POST[], porke no trascienden hacia las fucniones.... pruebalo tu mismo, instalate Apache+PHP y desactiva register_globals !!

bye bye

lo que tu digas jajaja
En línea

Diabliyo


Desconectado Desconectado

Mensajes: 1.441


shell# _


Ver Perfil WWW
Re: Duda para manejar variables cuando 'register_globals=off' !!
« Respuesta #28 en: 13 Noviembre 2007, 16:15 pm »

Hola:

Listo, problema resuelto...

El problema era la posicion en la que me encontraba para despues INCLUIR el archivo config.php, debido a que anteriormente estaba en la direccion raiz del sitio / he incluia directamente el archivo ( include( "admin/config.php" ); ), y posteriormente NO podia LEER las constantes debido a que accedia al directorio admin/ y realizaba erroneamente la inclucion del config.php ( include( "admin/config.php" ); )....

El error lo solucione posicionandome SIEMPRE en el directorio RAIZ del sitio /, debido a como TODOS los archivos importantes y de configuracion son cargados por un modulo UNICO ubicado en: modulos/modulos.php.

Gracias de antemano... Si tengo cualquier otro problemilla, les comento !!

bye bye
En línea

Páginas: 1 2 [3] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Trabajando con register_globals = Off
PHP
Lupin 8 4,541 Último mensaje 23 Septiembre 2011, 23:46 pm
por edorloor
[DUDA] Manejar timestamp
PHP
DarK_FirefoX 3 1,740 Último mensaje 3 Abril 2015, 21:29 pm
por MinusFour
DUDA Como manejar un coche de manera tele-dirigida con C AYUDA! « 1 2 »
Electrónica
GutiD 10 8,426 Último mensaje 20 Julio 2015, 21:29 pm
por GutiD
Manejar ficheros en variables
Programación C/C++
Jano4 3 2,163 Último mensaje 24 Febrero 2016, 14:21 pm
por Jano4
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines