Foros del Web » Programando para Internet » PHP »

PROBLEMA CON SECIONES Y EL "register_globals = Off"

Estas en el tema de PROBLEMA CON SECIONES Y EL "register_globals = Off" en el foro de PHP en Foros del Web. HOLA que tal amigos necesito de su ayuda URGENTE!!!!!, haber yo no soy muy diestro en el manejo del codigo en php, pero algo me ...
  #1 (permalink)  
Antiguo 02/03/2006, 12:25
Avatar de p4bl1t0  
Fecha de Ingreso: marzo-2006
Mensajes: 29
Antigüedad: 18 años, 1 mes
Puntos: 0
PROBLEMA CON SECIONES Y EL "register_globals = Off"

HOLA que tal amigos necesito de su ayuda URGENTE!!!!!,
haber yo no soy muy diestro en el manejo del codigo en php, pero algo me defiendo, el caso es que eh conseguido un codigo que me sirve para validar usuarios que entran a un panel donde administran unas noticias...
el problema va en el momento en que uno va a ingresar al panel con el usuario y contraseña que estan almacenadas en una BD de MySQL, en ese momento cuando la directiva del php.ini esta en "register_globals = Off", y se ingresa el usuario y contraseña correcto me envia al "index.php?errorusuario=si" cuando en realidad esta correcto, para probar la cambie a "register_globals = On", y en ese momento si sirvio como debe ser. El caso es que a mi no me sirve dejarla "register_globals = On" por que en el servidor donde pienso subir el site esta en "Off", y no pienso hacer que la cambien....

eh estado buscando como solucionarlo y encontre que deberia declarar algunas variables como globales y superglobales algo asi... pero como les habia dicho no soy muy diestro con el codigo asi que con "register_globals = Off" aplique 2 posibles soluciones que encontre por ahi en otros foros:

1. solucion
añadir al comienzo de mi script la linea
Código PHP:
<? 
extract
($_POST);
?>
asi que quedaria asi el archivo "action_verificar_users.php"
Código PHP:
<? 

extract
($_POST); //aca esta la linea nueva

include("../conex.php"); //"conex.php" contiene la conexion a la Base de Datos
$link=Conectarse(); 
$sql "SELECT * FROM usuarios WHERE usuario='$usuario' and clave='$contrasena'"
$result mysql_query($sql,$link); 
if (
mysql_num_rows($result)!=0){ 
    
session_start(); 
    
session_register("logged"); 
    
$logged "ok"
    
header("Location: panel.php"); 
}else { 
    
header("Location: index.php?errorusuario=si"); 

mysql_free_result($resultado); 
mysql_close($link); 
?>
pero cuando hago esto y ingreso los datos en el formulario ya no me devuelve el error, si no que me envia al formulario tal y como estaba sin que lo hubiera llenado con el usuario y contraseña al "index.php"

2. Solucion
seria en el mismo fichero de "action_verificar_users.php" añadir estas lineas
Código PHP:
<?
$usuario 
$_POST['usuario'];
$contrasena $_POST['contrasena'];
?>
todo el codigo del fichero quedaria asi:
Código PHP:
<? 

$usuario 
$_POST['usuario'];  //estas son las
$contrasena $_POST['contrasena'];  //nuevas lineas

include("../conex.php"); //"conex.php" contiene la conexion a la Base de Datos
$link=Conectarse(); 
$sql "SELECT * FROM usuarios WHERE usuario='$usuario' and clave='$contrasena'"
$result mysql_query($sql,$link); 
if (
mysql_num_rows($result)!=0){ 
    
session_start(); 
    
session_register("logged"); 
    
$logged "ok"
    
header("Location: panel.php"); 
}else { 
    
header("Location: index.php?errorusuario=si"); 

mysql_free_result($resultado); 
mysql_close($link); 
?>
Igual que la anterior Solucion me devuelve lo mismo que cuando ingreso los datos, el "index.php"

Contenido del fichero "panel.php":
Código PHP:
<? include ("seguridad.php");?>
<html>
<title>Panel de control</title>
<!-- aca va el contenido del panel -->
</body>
</html>
Contenido del fichero "seguridad.php":
Código PHP:
<?php 
session_start
(); 
if (
$_SESSION["logged"]!="ok") { 
    
header("Location: index.php"); 
    exit(); } 
?>
Contenido del fichero "conex.php":
Código PHP:
<?php 
function Conectarse() 

//aqui va el nombre de usuario y contraseña
   
if (!($link=mysql_connect("localhost","usuario","contraseña"))) 
   { 
      echo 
"Error conectando a la base de datos."
      exit(); 
   } 
// nombre de la base de datos
   
if (!mysql_select_db("noticias",$link)) 
   { 
      echo 
"Error seleccionando la base de datos."
      exit(); 
   } 
   return 
$link

?>
script de la creacion de tablas:
Código:
CREATE TABLE usuarios ( 
ID_user int(11) NOT NULL auto_increment, 
usuario TEXT NULL,
clave TEXT NULL,
mail TEXT NULL,
PRIMARY KEY (ID_user), 
UNIQUE ID (ID_user) 
); 

INSERT INTO usuarios (usuario,clave) values 
('admin','admin');
BUENO TRATE DE SER LO MAS CLARO POSIBLE CON MI PROBLEMA, ESPERO SUS RESPUESTAS... GRACIAS
  #2 (permalink)  
Antiguo 02/03/2006, 14:17
Avatar de david_M_G  
Fecha de Ingreso: febrero-2005
Mensajes: 938
Antigüedad: 19 años, 2 meses
Puntos: 20
Si quieres tener activado Register_globals "ON" en tu cuenta de hosting (no tiene por qué tenerlo en todas las cuentas del servidor completo) puedes subir al FTP el archivo .htaccess, si no lo tiene ya, y editarlo para ponerle este valor:

Cita:
php_value register_globals 1
Espero haber sido de ayuda, aunque sea la solución fácil
  #3 (permalink)  
Antiguo 02/03/2006, 15:59
Avatar de p4bl1t0  
Fecha de Ingreso: marzo-2006
Mensajes: 29
Antigüedad: 18 años, 1 mes
Puntos: 0
Exclamación

Cita:
Iniciado por david_M_G
Si quieres tener activado Register_globals "ON" en tu cuenta de hosting (no tiene por qué tenerlo en todas las cuentas del servidor completo) puedes subir al FTP el archivo .htaccess, si no lo tiene ya, y editarlo para ponerle este valor:

Espero haber sido de ayuda, aunque sea la solución fácil
Gracias david_M_G por tu respuesta... pero hay un problema, es que yo no tengo acceso a la cuenta ftp para subir eso, me hago entender, osea que yo no soy el que va a subir el site al server, eso lo hace otra persona a la cual le tengo que entregar mis fuentes "el site completo" para que la suba a su server, y el me dijo que no le cambiaba lo "register_globals = Off" a "On" por la seguridad y eso , y estoy seguro que si envio ese archivo el .htaccess, el lo va a editar y va a ver eso, bueno en fin voy a intentar hacer eso, pero lo dejare para el final, si ya no hay mas remedio
de todo modos muchas gracias por tu respuesta david_M_G
  #4 (permalink)  
Antiguo 02/03/2006, 17:12
Avatar de david_M_G  
Fecha de Ingreso: febrero-2005
Mensajes: 938
Antigüedad: 19 años, 2 meses
Puntos: 20
Haces bien considerando los superglobals. Realmente, el register_globals es poco seguro, te la podrían "colar". Pero ya te digo, si tienes la opción, actívalo, como recurso fácil. Luego más adelante que nada te prohiba pasar a superglobals
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:49.