Foros del Web » Programando para Internet » PHP »

Problema con Login

Estas en el tema de Problema con Login en el foro de PHP en Foros del Web. hola! Estoy tratando de armar un login, les dejo el código, porque no logro encontrar el error, me dice que el usuario y contraseña son ...
  #1 (permalink)  
Antiguo 01/12/2011, 18:58
 
Fecha de Ingreso: agosto-2003
Mensajes: 524
Antigüedad: 20 años, 8 meses
Puntos: 5
Problema con Login

hola!

Estoy tratando de armar un login, les dejo el código, porque no logro encontrar el error, me dice que el usuario y contraseña son incorrectas cuando no es asi.

A ver si me pueden ayudar...

login.php
Código PHP:
<?php
    
require_once("php/sesion.class.php");

    
$sesion = new sesion();
    
    if( isset(
$_POST["iniciar"]) )
    {
        
        
$usuario = isset($_POST["usuario"]);
        
$password = isset($_POST["password"]);
        
        if(
validarUsuario($usuario,$password) == true)
        {            
            
$sesion->set("usuario",$usuario);
            
            
header("location: principal.php");
        }
        else 
        {
            echo 
"Verifica tu nombre de usuario y contraseña";
        }
    }
    
    function 
validarUsuario($usuario$password)
    {
        
$conexion = new mysqli("localhost","root","clave","base");
        
$consulta "select contrasenia from usuario where nick = '$usuario';";
        
        
$result $conexion->query($consulta);
        
        if(
$result->num_rows 0)
        {
            
$fila $result->fetch_assoc();
            if( 
strcmp($password,$fila["contrasenia"] == ))
                return 
true;                        
            else                    
                return 
false;
        }
        else
                return 
false;
    }

?>
Código HTML:
<html>
<head>
<title></title>
</head>

<body>
<form name="frmLogin" action="<?php echo $_SERVER['PHP_SELF']; ?>" method="POST">
  <div>
   <div> <label>Usuario: </label> <input type="text" name = "usuario"/></div>
    <div><label>Contraseña: </label> <input type="password" name = "passsword" /></div>
    <div><input type="submit" name ="iniciar" value="Iniciar Sesion"/></div>
  </div>
</form>
</body>
</html> 

sesion.class.php

Código PHP:
<?php
class sesion {
  function 
__construct() {
     
session_start ();
  }
  public function 
set($nombre$valor) {
     
$_SESSION [$nombre] = $valor;
  }
  public function 
get($nombre) {
     if (isset ( 
$_SESSION [$nombre] )) {
        return 
$_SESSION [$nombre];
     } else {
         return 
false;
     }
  }
  public function 
elimina_variable($nombre) {
      unset ( 
$_SESSION [$nombre] );
  }
  public function 
termina_sesion() {
      
$_SESSION = array();
      
session_destroy ();
  }
}
?>
__________________
Saludos!!!
Maru.-
  #2 (permalink)  
Antiguo 01/12/2011, 19:12
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: Problema con Login

Código PHP:
Ver original
  1. // El error:
  2. if( strcmp($password,$fila["contrasenia"] == 0 ))
  3.  
  4. // Deberia ser:
  5. if( strcmp($password,$fila["contrasenia"]) == 0)

Cambiaste de lugar el paréntesis, eso es todo.
__________________
- León, Guanajuato
- GV-Foto
  #3 (permalink)  
Antiguo 01/12/2011, 19:31
 
Fecha de Ingreso: agosto-2003
Mensajes: 524
Antigüedad: 20 años, 8 meses
Puntos: 5
Respuesta: Problema con Login

Gracias por responder Triby!
Probé ese cambio pero sigo con el mismo problema.

Dejo el formato de la tabla por las dudas.

Código PHP:
CREATE TABLE `usuario` (  
`
idusuarioINTEGER(11UNSIGNED ZEROFILL NOT NULL AUTO_INCREMENT,  
`
NombreVARCHAR(20NOT NULL DEFAULT '',  
`
nickVARCHAR(20NOT NULL DEFAULT '',  
`
contraseniaVARCHAR(20NOT NULL DEFAULT '',  
PRIMARY KEY (`idusuario`),  UNIQUE KEY `idusuario` (`idusuario`)
ENGINE=InnoDB CHARACTER SET 'latin1'
además tuve que declarar las variables de este modo
Código PHP:
$usuario = isset($_POST["usuario"]);
$password = isset($_POST["password"]); 
de lo contrario tira este warning Notice: Undefined index: password
__________________
Saludos!!!
Maru.-

Última edición por Maru77; 01/12/2011 a las 19:37
  #4 (permalink)  
Antiguo 01/12/2011, 20:28
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: Problema con Login

Ups, no me di cuenta de esto:

$usuario = isset($_POST["usuario"]);

Esto hara que el resultado de isset() se asigne a $usuario y siempre tendrá un valor de verdadero o falso, puedes hacerlo con asignación ternaria:

$variable = (condición) ? 'La condición devuelve verdadero' : 'La condición devuelve falso';

Entonces, quedaría finalmente:

$usuario = (isset($_POST["usuario"])) ? $_POST["usuario"] : '';

Si no existe en $_POST entonces se le asigna valor de cadena vacía.

Finalmente, recuerda que en HTML todas las etiquetas y sus propiedades deben estar especificadas en minúsculas, en tu <form> tienes method="POST", cámbialo por method="post" y debería funcionar.
__________________
- León, Guanajuato
- GV-Foto
  #5 (permalink)  
Antiguo 01/12/2011, 20:47
 
Fecha de Ingreso: agosto-2003
Mensajes: 524
Antigüedad: 20 años, 8 meses
Puntos: 5
Respuesta: Problema con Login

Evidentemente llega un valor vacío, probé con el cógido que me dijiste y sigo con el mismo problema, luego lo forcé de este modo y funcionó, pero no es lo que corresponde dado que aunque el usuario y/o clave sean ingresados de forma erronea loguea igual. :(

Código PHP:
$usuario = (isset($_POST["usuario"])) ? $_POST["usuario"] : 'admin';
        
$password = (isset($_POST["password"])) ? $_POST["password"] : 'admin'
__________________
Saludos!!!
Maru.-
  #6 (permalink)  
Antiguo 01/12/2011, 20:50
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: Problema con Login

Ok, hay que saber que es lo que estás recibiendo en $_POST, esto es fácil con:

Código PHP:
Ver original
  1. // Antes de asignar usuario y contraseña
  2. echo '<pre>';
  3. var_dump($_POST);
  4. echo '</pre>';
  5. die();
__________________
- León, Guanajuato
- GV-Foto
  #7 (permalink)  
Antiguo 01/12/2011, 21:03
 
Fecha de Ingreso: agosto-2003
Mensajes: 524
Antigüedad: 20 años, 8 meses
Puntos: 5
Respuesta: Problema con Login

Me devuelve esto, que por lo visto está bien... se pudo misterioso esto...

array(3) {
["usuario"]=>
string(5) "admin"
["passsword"]=>
string(5) "admin"
["iniciar"]=>
string(14) "Iniciar Sesion"
}
__________________
Saludos!!!
Maru.-
  #8 (permalink)  
Antiguo 01/12/2011, 23:12
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: Problema con Login

Caramba, eso es raro... elimina la parte del var_dump y el die... intenta nuevamente, cambiando los 'admin' de $usuario y $contraseña por '' para evitar cosas raras.

Si algo falla, muestra tu código nuevamente.
__________________
- León, Guanajuato
- GV-Foto
  #9 (permalink)  
Antiguo 02/12/2011, 06:04
 
Fecha de Ingreso: agosto-2003
Mensajes: 524
Antigüedad: 20 años, 8 meses
Puntos: 5
Respuesta: Problema con Login

Gracias por tu ayuda Triby!

La verdad no encuentro explicación de porque no funciona, probé el código en otra pc y pasa lo mismo.

Voy a buscar algún otro ejemplo sencillo de login con base de datos.
__________________
Saludos!!!
Maru.-
  #10 (permalink)  
Antiguo 08/12/2011, 10:34
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: Problema con Login

Pues yo lo que veo es que en tu var_dump tienes: ["passsword"]=> y tu estas preguntando por $_POST['password'].

Tienes una s de más en tu input <input type="password" name = "passsword" />.

Saludos.

Etiquetas: html, login, mysql, variables, usuarios
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 16:21.