Foros del Web » Programando para Internet » PHP »

Me podrian ayudar con este codigo?

Estas en el tema de Me podrian ayudar con este codigo? en el foro de PHP en Foros del Web. Que tal amigos, estoy intentando entender y hacer unas variaciones de este codigo, pero no se que pasa cuando me logeo desde el formulario si ...
  #1 (permalink)  
Antiguo 25/05/2005, 17:51
 
Fecha de Ingreso: agosto-2004
Mensajes: 258
Antigüedad: 13 años, 4 meses
Puntos: 0
Pregunta Me podrian ayudar con este codigo?

Que tal amigos, estoy intentando entender y hacer unas variaciones de este codigo, pero no se que pasa cuando me logeo desde el formulario si el usuario o la clave esta mal, debe redireccionarte al logeo y si esta en blanco tambien, pero no funca se queda en blanco, este codigo es de un amigo de la web es conocido, como ven no le hecho grandes cambios solo estoy probando, pero no se porque no funciona, gracias por su tiempo.
Código PHP:
<?php
include("vars.php");

$db_conexion=mysql_connect($hst,$usr,$pwd) or die("$msg[2]");
mysql_select_db($dbe);

$usuario_consulta mysql_query("SELECT id,cod_usu,clave,rango_usu FROM usuarios WHERE cod_usu='".$_GET['user']."'");

if (
mysql_num_rows($usuario_consulta) != 0)
{
    
$login stripslashes($_GET['user']);
    
$password $_GET['pass'];
    
$usuario_datos mysql_fetch_array($usuario_consulta);
    
    if (
$login != $usuario_datos['cod_usu']) || ($login==""
    {
           
header ("Location: ../index.php");
        exit;
    }

    
// si el password no es correcto ..
    // salimos del script con error 3 y redireccinamos hacia la página de error
    
if ($password != $usuario_datos['clave']) || ($password==""
    {
        
header ("Location: ../index.php");
        exit;
    }    
    
    
// En este punto, el usuario ya esta validado.
    // Grabamos los datos del usuario en una sesion.
    
     // le damos un mobre a la sesion.
    
session_name('SPE');
     
// incia sessiones
    
session_start();

    
// Paranoia: decimos al navegador que no "cachee" esta página.
    
session_cache_limiter('nocache,private');
    
    
// Asignamos variables de sesión con datos del Usuario para el uso en el
    // resto de páginas autentificadas.

    // definimos usuarios_id como IDentificador del usuario en nuestra BD de usuarios
    
$_SESSION['usuario_id']=$usuario_datos['id'];
    
    
// definimos usuario_nivel con el Nivel de acceso del usuario de nuestra BD de usuarios
    
$_SESSION['usuario_nivel']=$usuario_datos['rango_usu'];
    
    
//definimos usuario_nivel con el Nivel de acceso del usuario de nuestra BD de usuarios
    
$_SESSION['usuario_login']=$usuario_datos['cod_usu'];

    
//definimos usuario_password con el password del usuario de la sesión actual (formato md5 encriptado)
    
$_SESSION['usuario_password']=$usuario_datos['clave'];

    
header ("location: ../principal.php");
    
}else {
      
// si no esta el nombre de usuario en la BD o el password ..
      // se devuelve a pagina q lo llamo con error
      
Header ("Location: ../index.php");
      exit;}
?>
  #2 (permalink)  
Antiguo 26/05/2005, 07:45
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Te faltó indicar tu formulario HTML donde pides esos datos de "user" y "pass" .. por qué ahí en ese código se vé que esperas esas variables por $_GET .. y no vemos como realmente llegan (por GET o POST). Podría estar el problema por ahí.

Por otro lado .. Realmente si no vas a identificar ni controlar que tipo de error tiene el usuario al hacer su login; bien que se equivoque en la contraseña .. o el usuario no exista, no tiene mucho sentido toda la lógica que usas (tomada de mi "Autentificator" como base ..? ...sólo es curiosidad .. el código es libre no te preocupes).

Bajo ese punto de vista . .no te compliques .. valida en la sentencia SQL el usuario y su password .. si el resultado es 1: coincide usuario/contraseña = login aceptado .. si es 0 .. no acertó=login incorrecto. También se supone que los usuarios son "únicos" .. así que la validación es contra =1 .. no !=0 ..(no se ha de esperar +1 usuario igual con nombre y contraseña igual)

Código PHP:
$usuario_consulta mysql_query("SELECT id,cod_usu,clave,rango_usu FROM usuarios WHERE cod_usu='".$_GET['user']."' AND clave='".$_GET['pass']."'"); 

if (
mysql_num_rows($usuario_consulta) == 1){
// usuario validado y correcto .. crea tus variables de sesión y redirecciona a donde corresponda.
} else {
// usuario no válido .. hay un error .. redirecciona a donde corresponda.

Otro detalle (por curiosidad) .. tus contraseñas como las gestionas? (al parecer son "planas" = no encriptadas (con MD5() u otros) ..)

Un saludo,
  #3 (permalink)  
Antiguo 26/05/2005, 13:11
 
Fecha de Ingreso: agosto-2004
Mensajes: 258
Antigüedad: 13 años, 4 meses
Puntos: 0
Pregunta Otra consultilla cluster

como estas amigo cluster, por fin vi mi error, ya lo hice pero un detalle, ayudame a entender, en tu codigo hay esta parte :

Código PHP:
// Hacemos una llamada a si mismo (scritp) para que queden disponibles
// las variables de session en el array asociado $HTTP_...

    
$pag=$_SERVER['PHP_SELF'];
    
Header ("Location: $pag?");
    exit; 
dime con esto registras las variables de session en el arreglo http?, porque en el mio no lo pongo y cuando redirecciono a mi principal y recojo e imprimo dichas variables de session solo me a aparece en nombre de session: PHPSESSID, como podria hacer, aca te dejo mi script, bueno el tuyo pero alguito modificado.

Código PHP:
<?php
include("vars.php");

if (isset(
$_GET['user']) && isset($_GET['pass'])) 
{
    
$db_conex=mysql_connect($hst,$usr,$pwd) or die(header ("Location: ../index.php?msg_error=2"));

    
mysql_select_db($dbe) or die(header ("Location: ../index.php?msg_error=3"));
    
    
$usuario_consulta mysql_query("SELECT * FROM usuarios WHERE cod_usu='".$_GET['user']."'") or die(header ("Location: ../index.php?msg_error=4"));
    
    if (
mysql_num_rows($usuario_consulta)!=0)
    {
     
$login stripslashes($_GET['user']);
     
$password $_GET['pass'];
     
     
$usuario_datos=mysql_fetch_array($usuario_consulta);
     
     
mysql_free_result($usuario_consulta);
     
mysql_close($db_conexion);
    
    if (
$login != $usuario_datos['cod_usu']) {
           
Header ("Location: ../index.php?msg_error=5");
        exit;}

    if (
$password != $usuario_datos['clave']) {
        
Header ("Location: ../index.php?msg_error=7");
        exit;}     
     
    unset(
$login);
    unset (
$password);
    
    
session_name($usuarios_sesion);
    
session_start();

    
// Paranoia: decimos al navegador que no "cachee" esta página.
    
session_cache_limiter('nocache,private');    
    
    
// Asignamos variables de sesión con datos del Usuario para el uso en el
    // resto de páginas autentificadas.

    // definimos usuarios_id como IDentificador del usuario en nuestra BD de usuarios
    
$_SESSION['usuario_id']=$usuario_datos['id'];
    
    
// definimos usuario_nivel con el Nivel de acceso del usuario de nuestra BD de usuarios
    
$_SESSION['usuario_nivel']=$usuario_datos['rango_usu'];
    
    
//definimos usuario_nivel con el Nivel de acceso del usuario de nuestra BD de usuarios
    
$_SESSION['usuario_login']=$usuario_datos['cod_usu'];

    
//definimos usuario_password con el password del usuario de la sesión actual (formato md5 encriptado)
    
$_SESSION['usuario_password']=$usuario_datos['clave'];    
     
    
header("Location: ../principal.php");
     
    }else{
          
header("Location: ../index.php?msg_error=6");
         }
}else {

// -------- Chequear sesión existe -------

// usamos la sesion de nombre definido.
session_name($usuarios_sesion);
// Iniciamos el uso de sesiones
session_start();

// Chequeamos si estan creadas las variables de sesión de identificación del usuario,
// El caso mas comun es el de una vez "matado" la sesion se intenta volver hacia atras
// con el navegador.

if (!isset($_SESSION['usuario_login']) && !isset($_SESSION['usuario_password'])){
// Borramos la sesion creada por el inicio de session anterior
session_destroy();
die (
header ("Location: ../index.php?msg_error=8"));
exit;
}
}

?>
Espero me puedas despejar la dudita y gracias por tu tiempo cluster...
  #4 (permalink)  
Antiguo 27/05/2005, 07:52
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Cita:
// Hacemos una llamada a si mismo (scritp) para que queden disponibles
// las variables de session en el array asociado $HTTP_...

$pag=$_SERVER['PHP_SELF'];
Header ("Location: $pag?");
exit;
En definitiva el comentario y el código sólo diche que ahí en ese punto se va a redireccionar el script a la misma página para que $_SESSION contenga los valores que antes se le dieron. Esto es así por qué las sesiones que defines no quedan realmente disponible (físicamente) hasta la próxima "petición" al servidor (bien sea que recargas la página, que llamas a otra página/scritp donde accedes a esas variables de sesión ..etc).

-----------------------

En tu caso particular .. no sé como vas a usar ese código .. pero fijate que si validas a tu usuario (por tu formulario de login) redireccionas a "principal.php" .. OK, podría ser así .. Pero entonces tendrías que separar la parte de "autentificación" y la de validación (el "else" y el código que ahí usa para validar la existencia de $_SESSION y las variables de sesión que ahí se hacen mención).

Es decir, tendrías que tener un "autentifica.php" con la primera parte del "if()" que usas donde se valida $_GET y otro "valida.php" con la segunda parte del if() ... donde validas las sesiones $_SESSION .. ese script sería el que incluirias en tu scripts protegidos y de tu formulario de login .. tan sólo hacia (por su action=...) al "autentificator.php" pues si validas correctamente derivas hacia "principal.php" (donde tendrías tu "valida.php" incluido por si acceden "directo" sin pasar por tu login/autentificación)

otro detalle
Termina la ejecución del script cuando hagas una redirección de tipo header("Location: ....") .. sino, la ejecución de tu script continua .. y eso no es lo que te interesa, pues si "redireccionas" es para "cambiarte" a otro script .. no cuando este termine .. pasar a otro.

Para esto usa:
Código PHP:
header(....);
exit; 
(vamos .. como está en el script Autentificator original ..)

Un saludo,
  #5 (permalink)  
Antiguo 30/05/2005, 16:30
 
Fecha de Ingreso: agosto-2004
Mensajes: 258
Antigüedad: 13 años, 4 meses
Puntos: 0
Pregunta

Ya me salio cluster, gracias por la ayuda... te lo agradesco mucho

Última edición por masterhades; 31/05/2005 a las 08:47
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:17.