Foros del Web » Programando para Internet » PHP »

Validar usuario obtenido por POST en BBDD

Estas en el tema de Validar usuario obtenido por POST en BBDD en el foro de PHP en Foros del Web. Hola, primero de todo saludos a todos y enhorabuena por el foro que me gusta mucho. No domino mucho de casi nada pero me encanta ...
  #1 (permalink)  
Antiguo 17/12/2007, 11:53
 
Fecha de Ingreso: diciembre-2007
Ubicación: Barcelona
Mensajes: 289
Antigüedad: 16 años, 4 meses
Puntos: 8
Validar usuario obtenido por POST en BBDD

Hola, primero de todo saludos a todos y enhorabuena por el foro que me gusta mucho. No domino mucho de casi nada pero me encanta aprender y a eso voy. Supongo que con vuestra ayuda será mucho más fácil.

Y ahora el tema.
La cosa es que necesito validar un usuario y contraseña que tengo en una BBDD donde puede haber n usuarios con sus respectivas contraseñas. He hecho un código pero solo me valida el primero de la tabla, el resto se queda el navegador en blanco. Alguien ve mi fallo?
Pego el código:

Código PHP:
<?php
session_start
(); 
$errorMessage '';
$con mysql_connect("localhost","root","123456789");

if (!
$con)
  die(
'Impossible connectar: ' mysql_error());

mysql_select_db("tfc"$con);

if (isset(
$_POST['in_login']) && isset($_POST['in_password']))
{
  
$login $_POST['in_login'];
  
$passsword $_POST['in_password'];
  
$sql "SELECT *FROM usuarios";
  
$result mysql_query($sql,$con);
  while(
$row mysql_fetch_array($result))
  {    
     if((
$row["login"] == $login) &&($row["password"] == $passsword))
     {
       
header ('Location: index.php');
       exit;
      }
     else
     {
     
$errorMessage 'Error. Usuario o contraseña incorrectos.';
     exit;
     }
   }
}
?>
He probado de hacer un do-while pero si hago eso no puedo ni validar el primero de la tabla.
  #2 (permalink)  
Antiguo 17/12/2007, 12:08
Avatar de carmagedon  
Fecha de Ingreso: junio-2005
Ubicación: Argentina
Mensajes: 794
Antigüedad: 18 años, 10 meses
Puntos: 23
Re: Validar usuario obtenido por POST en BBDD

Creo que de ésta manera debería funcionarte, fijate lo que modifiqué y cual es la función de lo que hice...

Código:
<?php
session_start(); 
$errorMessage = '';
$con = mysql_connect("localhost","root","123456789");
mysql_select_db("tfc", $con);

if (!$con){
  die('Impossible connectar: ' . mysql_error());
}


if (isset($_POST['in_login']) && (isset($_POST['in_password'])))
{
  $login = $_POST['in_login'];
  $passsword = $_POST['in_password'];
  $sql = "SELECT usuario,password FROM usuario='".$login."', password='".$password."'";
  $result = mysql_query($sql,$con);
  $verfica = mysql_num_rows($sql);

	if ($verifica>=1){	
	       header ('Location: index.php');
	      }elseif($verifica<=0)
	     {
	       $errorMessage = 'Error. Usuario o contraseña incorrectos.';
		echo $errorMessage;
   }
}
?>
Cualquier cosa avisa,
Un saludo y suerte.
  #3 (permalink)  
Antiguo 17/12/2007, 12:09
 
Fecha de Ingreso: diciembre-2007
Ubicación: Barcelona
Mensajes: 289
Antigüedad: 16 años, 4 meses
Puntos: 8
Re: Validar usuario obtenido por POST en BBDD

Gracias a todos lo que hayan tenido la molestia de leerse el post pero ya he encontrado la solución. Lo que me cascaba el invento era el else, lo saco fuera del while y listos.

Código PHP:
<?php 
session_start
();  
$errorMessage ''
$con mysql_connect("localhost","root","123456789"); 

if (!
$con
  die(
'Impossible connectar: ' mysql_error()); 

mysql_select_db("tfc"$con); 

if (isset(
$_POST['in_login']) && isset($_POST['in_password'])) 

  
$login $_POST['in_login']; 
  
$passsword $_POST['in_password']; 
  
$sql "SELECT *FROM usuarios"
  
$result mysql_query($sql,$con); 
  while(
$row mysql_fetch_array($result)) 
  {     
     if((
$row["login"] == $login) &&($row["password"] == $passsword)) 
     { 
       
header ('Location: index.php'); 
       exit; 
      } 
   }
     
$errorMessage 'Error. Usuario o contraseña incorrectos.'

?>
  #4 (permalink)  
Antiguo 17/12/2007, 12:11
Avatar de mauled  
Fecha de Ingreso: marzo-2005
Ubicación: Cd. de México.
Mensajes: 3.001
Antigüedad: 19 años, 1 mes
Puntos: 33
De acuerdo Re: Validar usuario obtenido por POST en BBDD

mmm yo meteria la validación directamente en la consulta, no le veo sentido recorrer todo la tabla.

Código PHP:
if (isset($_POST['in_login']) && isset($_POST['in_password']))
{
  
$login $_POST['in_login'];
  
$passsword $_POST['in_password'];
  
$sql "SELECT * FROM usuarios login='{$login}' and password='{$passsword}' ";
  
$result mysql_query($sql,$con); 

 if(!empty(
$result))
 { 
    echo 
"Valido";
 }
 else
 { 
   echo 
"No existe";
 }


  #5 (permalink)  
Antiguo 17/12/2007, 12:17
 
Fecha de Ingreso: diciembre-2007
Ubicación: Barcelona
Mensajes: 289
Antigüedad: 16 años, 4 meses
Puntos: 8
Re: Validar usuario obtenido por POST en BBDD

Gracias a los dosp or responder tan rápido, pero cual es la diferencia entre las dos consultas que me pasais???
Cita:
carmagedon dice:
Código PHP:
$sql "SELECT usuario,password FROM usuario='".$login."', password='".$password."'"
Cita:
mauled dice:
Código PHP:
$sql "SELECT * FROM usuarios login='{$login}' and password='{$passsword}' "
La primera ya la probé y no se si concatenaba mal pero no me iba. Y en la segunda no falta un WHERE? Lo siento si digo tonterias pero acabo de empezar en esto...

Última edición por crujikoki; 17/12/2007 a las 12:47
  #6 (permalink)  
Antiguo 17/12/2007, 13:16
 
Fecha de Ingreso: diciembre-2007
Ubicación: Barcelona
Mensajes: 289
Antigüedad: 16 años, 4 meses
Puntos: 8
Re: Validar usuario obtenido por POST en BBDD

He probado las dos soluciones que me dais y no funcionan. Entiendo que lo de recorrer toda la talba sea inecesario, pero de momento es la única opción que me funciona. Si tenesi alguna solución que sea más óptima bienvenida sea!
Gracias de antemano.
  #7 (permalink)  
Antiguo 17/12/2007, 14:04
Avatar de mauled  
Fecha de Ingreso: marzo-2005
Ubicación: Cd. de México.
Mensajes: 3.001
Antigüedad: 19 años, 1 mes
Puntos: 33
De acuerdo Re: Validar usuario obtenido por POST en BBDD

Perdona.. fue error mi me falto poner el where

Código PHP:
$sql "SELECT usuario,password FROM where usuario='".$login."', password='".$password."'";  
//Agrega lo siguiente
 
$result mysql_query($sql,$con)or die(mysql_error()); 
Saludillos.
  #8 (permalink)  
Antiguo 17/12/2007, 15:44
 
Fecha de Ingreso: diciembre-2007
Ubicación: Barcelona
Mensajes: 289
Antigüedad: 16 años, 4 meses
Puntos: 8
Re: Validar usuario obtenido por POST en BBDD

Gracias por contestar de nuveo, pero sigue sin ir. No se por que por que a mi esa sintaxis me parece correcta, pero como ya he dicho solo me funciona si la query es a toda la tabla. Sinó no funciona. De todas formas si me puedes aclarar algo...
Cuando haces la última query que me has pasado:

Código PHP:
$sql "SELECT usuario,password FROM where usuario='".$login."', password='".$password."'"
Donde pones '".$login."' ahí entiendo que la concatenación la haces con el punto y usas las comillas dobles para romper la línea de código y insertar el string, no?
  #9 (permalink)  
Antiguo 17/12/2007, 16:20
Avatar de mauled  
Fecha de Ingreso: marzo-2005
Ubicación: Cd. de México.
Mensajes: 3.001
Antigüedad: 19 años, 1 mes
Puntos: 33
Re: Validar usuario obtenido por POST en BBDD

Cita:
Donde pones '".$login."' ahí entiendo que la concatenación la haces con el punto y usas las comillas dobles para romper la línea de código y insertar el string, no?
asi es!

Ya intentaste imprimiendo la consulta y ejecutandola directamente en la BD?

Saludillos.
  #10 (permalink)  
Antiguo 17/12/2007, 16:25
Avatar de kaninox  
Fecha de Ingreso: septiembre-2005
Ubicación: In my House
Mensajes: 3.597
Antigüedad: 18 años, 7 meses
Puntos: 49
Re: Validar usuario obtenido por POST en BBDD

igualmente pasara si pones

Código PHP:
$sql "SELECT usuario, password FROM WHERE usuario='$login' AND password='$password'"
te falta un AND por ciacaso ;) no la coma que pusiste
__________________
Gokuh Salvo al mundo. PUNTO!!!!
  #11 (permalink)  
Antiguo 18/12/2007, 03:44
 
Fecha de Ingreso: diciembre-2007
Ubicación: Barcelona
Mensajes: 289
Antigüedad: 16 años, 4 meses
Puntos: 8
Re: Validar usuario obtenido por POST en BBDD

Hola, gracias a los dos por contestar.
kaninox, tienes razón falta el AND y para más finura falta también seleccionar la tabla "usuarios" supongo.

mauled, no entendí lo que me has puesto:
Cita:
Ya intentaste imprimiendo la consulta y ejecutandola directamente en la BD?
No se que me has preguntado ahí...
Lo que también he probado es solo seleccionar la columna de login y a partir de eso buscar el password, pero tampoco. La única solución que me funcia por completo es coger la tabla entera. Supongo que la consultadirecta que me proponeis queda más de profesional pero no me funciona y no se porqué...
Me da error en la sintaxis tanto uando los "." como "&" o sin poner nada en la concatenación. Como ya dije mis conocimientos sobre el tema son muy escasos ya que hace apenas un més que empecé con esto. Si se os ocurre que puede ser os lo agradezco. Si ya os cansa el tema dejadlo por que de mientras puedo usar lo de cargar la tabla entera.
Muchas gracias!!!
  #12 (permalink)  
Antiguo 18/12/2007, 11:31
Avatar de carmagedon  
Fecha de Ingreso: junio-2005
Ubicación: Argentina
Mensajes: 794
Antigüedad: 18 años, 10 meses
Puntos: 23
Re: Validar usuario obtenido por POST en BBDD

Uh cierto, me confundí yo, era AND en vez de la " , " (coma)...
Mis disculpas, pero fijate que mi ejemplo debería funcionarte o dale un par de vueltas, porque es un sistema de login muy sencillo.

Saludos.
  #13 (permalink)  
Antiguo 21/12/2007, 19:36
 
Fecha de Ingreso: diciembre-2007
Ubicación: Barcelona
Mensajes: 289
Antigüedad: 16 años, 4 meses
Puntos: 8
Re: Validar usuario obtenido por POST en BBDD

Cita:
Iniciado por carmagedon Ver Mensaje
Uh cierto, me confundí yo, era AND en vez de la " , " (coma)...
Mis disculpas, pero fijate que mi ejemplo debería funcionarte o dale un par de vueltas, porque es un sistema de login muy sencillo.

Saludos.
Hola, pues la verdad es que si. La concatenación que usas era la correcta que por lo visto yo no hacía bien. De todos modos gracias a todos por contestar. Ahora creo que haré consultas más óptimas.

Pego la colución final por si a alguien le interesa:
Código PHP:
<?php
session_start
(); 
$errorMessage '';
$con mysql_connect("localhost","root","123456789");

if (!
$con)
  die(
'Impossible connectar: ' mysql_error());

mysql_select_db("tfc"$con);

if (isset(
$_POST['login']) && isset($_POST['password']))
{
    
$sql "SELECT password FROM usuarios WHERE login = '".$_POST['login']."'";
    
$result mysql_query($sql,$con);
    
$row mysql_fetch_array($result);
    if (
$row["password"] == $_POST['password'])
    {
        
$_SESSION['logged_in'] = true;
        
header ('Location: index.php');
        exit;
    }
    
$errorMessage 'Error. Usuario o contraseña incorrectos.';
}
?>
La razón por la que no valido el password directamente en la BBDD es por que lo tendré encriptado en la solución final. Pero por el momento, tal y como está da lo mismo hacer la validación del password en la BBDD como fuera.

Saludos y gracias de muevo.
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:20.