Ver Mensaje Individual
  #22 (permalink)  
Antiguo 29/03/2013, 03:42
CyberSoft
 
Fecha de Ingreso: febrero-2010
Mensajes: 22
Antigüedad: 14 años, 9 meses
Puntos: 0
Respuesta: problema con validacion de usuario

Cita:
Iniciado por loncho_rojas Ver Mensaje
He estado mirando tu código de manera más detenida, la verdad me deja confuso y das demasiadas vueltas para ver una cosa, y no me refiero a los IF.

Primero le metes un archivo llamado logueo.php que se supone ya debería loguear al usuario, y despues tienes un login.php que de nuevo verificas si el usuario es válido y demás, estás haciendo la misma cosa en ambos... no se cómo te funcionaba el código anteriormente ni quién desarrolló esto...

Si deseas loguear, solo le pides USER y PASS (obvio)

Compruebas si los campos están completos -- Ya lo hiciste
Compruebas que exista el usuario --- ya lo hiciste pero de manera poco práctica
Compruebas que si existe el usuario coincida con la pass que ingresó--- es dificil que lo haga si no encuentra resultados... no te voy a dar la solución exacta pero te lo pongo de esta manera...



Código PHP:

<?php


$link
=mysql_connect("localhost","qpv195","Nagusia07");
mysql_select_db("qpv195",$link) or die ("Error");

function 
quitar($mensaje){
    
$mensaje str_replace("<","&lt;",$mensaje);
    
$mensaje str_replace(">","&gt;",$mensaje);
    
$mensaje str_replace("\'","'",$mensaje);
    
$mensaje str_replace('\"',"&quot;",$mensaje);
    
$mensaje str_replace("\\\\","\\",$mensaje);
    return 
$mensaje;
    }
    
    if(
trim($_POST["nick"]) != "" && trim($_POST["pass"]) != "")
    {
    
$nickN quitar($_POST["nick"]);
    
$passN quitar($_POST["pass"]);
    
    
$result mysql_query("SELECT pass FROM usuarios WHERE nick='$nickN'")or die(mysql_error());
    
//veo cuantos resultado existen con la consulta
    
$nummysql_num_rows($result);
    
    
    
//veo si el numero de coincidencias es mayor a 0 es decir, si existen coincidencias
    
if($num>0){
        
        
//recien ahora hago la llamada el row
        
$rowmysql_fetch_array($result);
        
        if(
$row["pass"] == $passN)
        {
            
//90 dias dura la cookie
            ##################################################
            //YO REEMPLAZARIA ESTO
            
            //setcookie("usNick",$nickN,time()+7776000);
            //setcookie("usPass",$passN,time()+7776000);
            
            //POR ESTO
            #########################################################
            
            //inicio session
            
session_start();
            
//Session de usuario
            
$_SESSION["usNick"] = $nickN;
            
//session de pass
            
$_SESSION["usPass"] = $passN
            
######################################################################
            //UNA VEZ QUE LO REDIRIGISTE, NO TE VA A LEER MÁS EL CÓDIGO DE LOGUIN.PHP
            ############################################################################
            
?>
            <h1><b>Ingreso exitoso, ahora sera dirigido al area de usuarios.</b></h1>
            <script type="text/javascript">
            location.href = "areadeusuario.php";
            </script>
            <?
            
        
}else{
            
            echo 
"Contraseña incorrecta";
            
        }
    }else{
        
        echo 
"Usuario no existente en la base de datos";
    }
    
    
    
mysql_free_result($result);
}else{
    echo 
"Debe especificar un usuario y una contraseña";
}
mysql_close();

?>

NO SE QUE HACES CON EL ARCHIVO LOGIN.PHP, pero quitale el include ese que llama a logueo.php, no debería tenerlo y está demás...

Código PHP:

<?php

session_start
();
//te aconsejo que este código de conexion a la BD lo pongas en un
//archivo individual y llamalo conexion.php o algo así y solo 
//haces el include del mismo en cada página asi no debes escribirlo todo rato
$link=mysql_connect("localhost","qpv195","Nagusia07");
mysql_select_db("qpv195",$link) or die ("Error");

if(isset(
$_SESSION["usNick"]) && isset($_SESSION["usPass"])){
    
    
$result mysql_query("SELECT * FROM usuarios WHERE nick='".$_SESSION["usNick"]."' AND pass='".$_SESSION["usPass"]."'") or die(mysql_error());
    
$num_result=mysql_num_rows($result);

        if(
$num_result==1){

                     
$row=mysql_fetch_array($result);

            
$loginCorrecto true;
            
$idUsuarioL $row["id"];
            
$nickUsuarioL $row["nick"];
            
$emailUsuarioL $row["email"];
            
$nombreUsuarioL $row["nombre"];
            
$apellidosUsuarioL $row["apellidos"];
            
$telefonoUsuarioL $row["telefono"];
        }
 } else{
         
//redireccionamos si no existe la session creada
      
?> 
          <script language="javascript"> 
           location.href = "index.php"; 
            alert('Usted no ha validado su usuario, ingrese nuevamente por favor.'); 
              
             
          </script> 
      <?php 
          

      
}

     


?>
si aún así no te funciona, pues tendrás que ver que error genera y decirnos-
Gracias a todos ya esta resuelto el problema es que la variable LoginCorrecto estaba declarada dentro del if como true y hay que declararla fuera también a false y listo, tema de ámbito de variables que este servidor no lo reconoce como tal.

Un saludo a todos