Foros del Web » Programando para Internet » PHP »

problema con logueo de usuarios

Estas en el tema de problema con logueo de usuarios en el foro de PHP en Foros del Web. bueno, este es el código importante Código PHP: <?php session_start (); require( 'conexion.php' ); $query  =  "SELECT * FROM usuarios" ; $rs  =  mysql_query ( $query ,  $conexion ...
  #1 (permalink)  
Antiguo 12/01/2005, 07:07
Avatar de spider_boy  
Fecha de Ingreso: diciembre-2003
Ubicación: Chile
Mensajes: 1.855
Antigüedad: 14 años
Puntos: 88
problema con logueo de usuarios

bueno, este es el código importante

Código PHP:
<?php
session_start
();

require(
'conexion.php');

$query "SELECT * FROM usuarios";
$rs mysql_query($query$conexion);

$row mysql_fetch_array($rs);

if(
$nick == $row["nick"] && $password == $row["password"])
{
$_SESSION['nick'] = $nick;
$_SESSION['password'] = $password;
header("Location: index.php");
}
else
{
echo 
"Login Incorrecto<br>";
echo 
"Serás redirigido a la p&aacute;gina principal";
echo 
"<script language=\"javascript\">";
echo 
"setTimeout('location.href = \"index.php\"', 2000);";
echo 
"</script>";
}
?>
bueno, tengo 2 usuarios registrados de prueba, pero a la hora de loguear nada más me loguea al primer usuario, osea, nada más me lee el primer usuario y nose porqué, gracias...
  #2 (permalink)  
Antiguo 12/01/2005, 07:21
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 15 años, 5 meses
Puntos: 16
Hola,
Cita:
nada más me lee el primer usuario y nose porqué, gracias..
Sencillo:
Código PHP:
$query "SELECT * FROM usuarios";
$rs mysql_query($query$conexion); 
Realizas una consulta que devuelve todos los registros de la tabla.
Código PHP:
$row mysql_fetch_array($rs); 
Lees el primer registro.

Y nada mas. solo ejecutas el mysql_fetch_array() una vez.

Hasta aqui el por que. Ahora como deberias plantearlo.

Debes dejar que MySQL te haga el trabajo sucio. Si tienes una tabla con 1000 usuarios, y intenta logearse el numero 996, ¿vas a hacer que mysql te devuelva un array de 1000 elementos y luego vas a recorrerlo desde el comienzo comparando todos? Lo mismo que si coges las paginas amarillas y para encontrar el telefono de Perez, empiezas a revisar desde el comienzo de la A.

¿No es mas sencillo decirle a MySQL: dame el registro cuyo nick sea tal y su contraseña tal?
Código PHP:
$query "SELECT * FROM usuarios WHERE nick='$nick' AND password='$password'";
$rs mysql_query($query$conexion); 
Luego en el if no tienes que comparar por el valor, si existe ese par nick-pass, la consulta te habra devuelto 1 registro, si no existe te habra devuelto 0 registros:
Código PHP:
if(1=mysql_num_rows($rs))
{
$_SESSION['nick'] = $nick;
$_SESSION['password'] = $password;
header("Location: index.php");

Saludos.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #3 (permalink)  
Antiguo 12/01/2005, 07:23
Avatar de spider_boy  
Fecha de Ingreso: diciembre-2003
Ubicación: Chile
Mensajes: 1.855
Antigüedad: 14 años
Puntos: 88
ok, muchas gracias :D, voy a probar...
  #4 (permalink)  
Antiguo 12/01/2005, 07:28
Avatar de spider_boy  
Fecha de Ingreso: diciembre-2003
Ubicación: Chile
Mensajes: 1.855
Antigüedad: 14 años
Puntos: 88
jio jio jio, me funcionó, thanks so much :P
  #5 (permalink)  
Antiguo 12/01/2005, 07:36
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 15 años, 5 meses
Puntos: 16
De nothing
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 02:13.