Ver Mensaje Individual
  #1 (permalink)  
Antiguo 02/03/2006, 12:25
Avatar de p4bl1t0
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