Foros del Web » Programando para Internet » PHP »

Un problemita con un sis de login - help

Estas en el tema de Un problemita con un sis de login - help en el foro de PHP en Foros del Web. Buenas, de nuevo yo... tengo un sistema de login, va todo de 10, pero cuando llega el momento, se me crea un problema.. no tira ...
  #1 (permalink)  
Antiguo 15/09/2003, 12:16
Avatar de Sav1989  
Fecha de Ingreso: junio-2003
Ubicación: Cap Fed | Colegiales
Mensajes: 50
Antigüedad: 14 años, 5 meses
Puntos: 0
Un problemita con un sis de login - help

Buenas, de nuevo yo... tengo un sistema de login, va todo de 10, pero cuando llega el momento, se me crea un problema.. no tira ningun error de sintaxis, ni mysql, sino que no hace digamos lo que necesito.. hace todo lo inverso:
lo que uqiero es que chekee si el usuario ha ingresado un nick y un pass correcto, tengo este codigo, y siempre me tira un error, digamos, me dice que los datos son inciertos, cuando son ciertos realmente:
Código PHP:
<?
if(isset($login)){
    
// Chekeamos si los campos mandados estan completos.
    
if(!isset($luser) OR !isset($lpass)){
        if(!isset(
$luser)){
                
msg("Por favor, ingrese el usuario para el login","Ahora lo redireccionaremos atras para que ingrese el dato");
            }
        if(!isset(
$lpass)){
                
msg("Por favor, ingrese la contraseña para el login","Ahora lo redireccionaremos atras para que ingrese el dato");
            }
        }
    else{ 
// Si los datos fueron ingresados
        
$pass=md5($lpass);
        
$query="SELECT * FROM users WHERE pass='$pass' AND nick='$luser'";
        
$result=mysql_query($query,$mysql_con_id) or die(mysql_error());
        if(
mysql_num_rows($result)!=1){ // Si esta incorrecto
            
msg("El nombre de usuario o la contraseña no son correctos, intente nuevamente","Ahora lo redireccionaremos atras para que pueda ingresar correctamente, gracias");
        }
        else{ 
// Si los datos que ingreso, son veridicos
            
setcookie("login",$luser,time()+31536000);
            
setcookie("pass",$pass,time()+31536000);
            
msg("Gracias por loguearse".$luser,"Ahora lo redireccionaremos a la web home");
        }
    }
}
else{ 
// Si no habian hecho el submit, mostramos el form
    
echo "Aca ira el form";
}
?>
los datos los mando de otro form... en fin, la idea anda, pero no anda como quiero que ande...

Gracias por la ayuda que espero D:
  #2 (permalink)  
Antiguo 15/09/2003, 13:53
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 15 años, 5 meses
Puntos: 16
Hola,

Es decor, para el codigo, siempre estan mal, ¿Verdad? Pues te toca depurar los valores exactos. Haz un echo de $luser, $lpass, $pass y de los valores de la base de datos de ese usuario. Creo que puede ser un problema se mayusculas minusculas. Creo que la funcion md5() de PHP genera el hash en minusculas y la de MySQL en mayusculas, y que la comparacion la hace casesesitive. Pero mostrando los valores se vera rapidamente. Ademas, no se genera el mismo hash la palabras en mayuscula que en minuscula.

Saludos.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #3 (permalink)  
Antiguo 15/09/2003, 14:19
Avatar de Sav1989  
Fecha de Ingreso: junio-2003
Ubicación: Cap Fed | Colegiales
Mensajes: 50
Antigüedad: 14 años, 5 meses
Puntos: 0
Buenas, gracias por ayudar, tengo una pregunta ahora:
como hago para q las comparaciones no sean case-sensitive?
  #4 (permalink)  
Antiguo 15/09/2003, 14:33
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 15 años, 5 meses
Puntos: 16
Bueno, una solucion es pasar ambas cadenas a minusculas y compararlas. En MySQL creo que la funcion es UCASE. ASi que quedaria:

SELECT * FROM users WHERE UCASE(pass)=UCASE('$pass') AND nick='$luser'

Saludos.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #5 (permalink)  
Antiguo 15/09/2003, 14:43
Avatar de Sav1989  
Fecha de Ingreso: junio-2003
Ubicación: Cap Fed | Colegiales
Mensajes: 50
Antigüedad: 14 años, 5 meses
Puntos: 0
GRRR... no hay caso che, probe con todo lo que sabia, a ver si le ves algun error aca , este es el script que vuelca los datos:

Código PHP:
<?
/*
getform.php
Este archivo contiene el script que recibira los datos del archivo
userform.php
No modifique el archivo si no sabe que hace, y si sabe, hagalo bajo
su propia responsabilidad.

Requiere el in1.php
            userform.php
            functions.php

Este archivo fue escrito por Sav1989.
*/
ini_set("include_path","D:\server\www\ucm\includes");
include(
"in1.php");
include(
"functions.php");
session_start();

$mysql_con_id=mysql_connect($mysql_server$mysql_user$mysql_pass); // Conectamos MySQL
mysql_select_db($mysql_db1,$mysql_con_id); // Seleccionamos DB
// Chekeamos si el formulario se ha completado de nuestra web - Seguridad

// Si es para un usuario : 
if($reg=="new_user"){
    
// Volvamos a array las varialbes recibidas
    
$recf=array(
        
'nick'=>$nick,
        
'name'=>$name,
        
'sname'=>$sname,
        
'born_day'=>$born_day,
        
'born_month'=>$born_month,
        
'born_year'=>$born_year,
        
'place'=>$place,
        
'mail'=>$mail,
        
'icq'=>$icq,
        
'msn'=>$msn,
        
'irc'=>$irc,
        
'web'=>$web,
        
'pass'=>$passsend,
        
'pass2'=>$passsend2,
        
'picklink'=>$piclink
        
);    
    
// Comprobamos las variables infaltables, Nick, Nombre, Apellido,
    // F. de nacimiento, localidad, e-mail
    
if(!isset($nick) & !isset($name) & !isset($sname) & !isset($mail) & !isset($pass)){
        
reg_error("falta_dato"); // en functions.php
        
}
    
// Chekeamos si hay un usuario con el mismo Nick, Mail, ICQ, msn, o nombre*apellido
    
$query="SELECT id FROM users WHERE nick='$recf[nick]' OR mail='$recf[mail]' OR name='$recf[name]' AND sname='$recf[sname]'";
    
$result=mysql_query($query,$mysql_con_id);//Volcamos el query en $result
    //Ahora cheakeamos si ya existe alguien con uno de los datos clave
    
if(mysql_num_rows($result)!=0){
        
reg_error("dato_usado");
        }
    
// Si la password es menor de 7 caracteres
    /*Start*/
    
$passlenght=strlen($recf['pass']);
    if(
$passlenght<$minimum_pass_lenght){
        
reg_error("pass_error_lenght");
        }
    
/*Fin*/
    // Chekeamos las contraseNas
    
if($recf['pass']!=$recf['pass2']){
        
reg_error("pass_error");
        }
    if(isset(
$_SESSION['error_msg'])){
        
redirectjs("error.php",0);
        }
    else{
        
// Y si no hubo errores, realizamos el volcado:
        
$passmd5=md5($recf['passsend2']);
        
$born_timestamp=$recf['born_day'].$recf['born_month'].$recf['born_year'];
        
$query="INSERT INTO users (nick,name,sname,mail,msn,icq,irc,place,born,web,piclink,pass) VALUES ('$nick','$name','$sname','$mail','$msn','$icq','$irc','$place','$born_timestamp','$web','$piclink','$passmd5')";
        
mysql_query($query,$mysql_con_id) OR die(mysql_error());
        
// Fin de Volcado
        // Metemos las cookies
        
setcookie("login",$recf['nick'],time()+31536000);
        
setcookie("pass",$passmd5,time()+31536000);
        
// Definimos varialbe de mensaje (session)
        
$_SESSION['msg_thanks_reg']="Gracias por registrarse".$recf['nick'].".";
        
// Redireccionamos a msg.php
        
redirectjs("msg.php",2);
    }
}
if(
$reg=="new_clan"){
    echo 
"El registro de clanes esta bajo construccion";
    }
?>
  #6 (permalink)  
Antiguo 15/09/2003, 14:57
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 15 años, 5 meses
Puntos: 16
Un vistazo rapido y veo eso:
Código PHP:
$passmd5=md5($recf['passsend2']); 
Pero miro en la lista de indices del array y no veo la clave 'passsend2'. Me fijo un poco mas y veo que existe la variable $passsend2. Asi que concluyo que te has liado entre el indice y la variable.

Saludos.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #7 (permalink)  
Antiguo 15/09/2003, 18:55
Avatar de Sav1989  
Fecha de Ingreso: junio-2003
Ubicación: Cap Fed | Colegiales
Mensajes: 50
Antigüedad: 14 años, 5 meses
Puntos: 0
jua jua.. q error horrible!!! .. lo hice andar, muchisimas graicas josemi, todo un maestro de buscar errores.
  #8 (permalink)  
Antiguo 16/09/2003, 02:48
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 15 años, 5 meses
Puntos: 16
No es nada. Mas sabe el zorro por viejo que por zorro
__________________
Josemi

Aprendiz de mucho, maestro de poco.
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 08:08.