Foros del Web » Programando para Internet » PHP »

Ayuda con inicio de session

Estas en el tema de Ayuda con inicio de session en el foro de PHP en Foros del Web. Necesito ayuda para iniciar sesion, ya que me pasa algo raro. Cuando me autentifico con el usuario y password correcto usando mayusculas y minusculas (ejemplo: ...
  #1 (permalink)  
Antiguo 02/07/2010, 00:14
 
Fecha de Ingreso: julio-2010
Mensajes: 1
Antigüedad: 12 años
Puntos: 0
Ayuda con inicio de session

Necesito ayuda para iniciar sesion, ya que me pasa algo raro.
Cuando me autentifico con el usuario y password correcto usando mayusculas y minusculas (ejemplo: usuario RikardoPR password RikardoPR1), si me muestra el archivo login_success.php
Cuando alguna letra del usuario o password esta mal, o de plano no tiene nada q ver con los registros de la BD, me muestra "usuario o contraseña incorrecta".
PERO:
si pongo el usuario y password TODO en minusculas, no me muestra el error ni el archivo login_success.php. q pasa q el archivo no

No es sensible a mayuculas y minisculas, o q pasa?


// Declarar usuario y password
$username=$_POST['usuario'];
$password=$_POST['password'];

$result=mysql_query("SELECT * FROM usuarios WHERE usuario='$username' and password='$password'");


//$count=mysql_num_rows($result);

if($row = mysql_fetch_array($result)){
if($row["password"]==$password && $row["usuario"]==$username){

$_SESSION["usuario"]=$username;

header("location:login_success.php");
}
}
else {
echo "Usuario o contraseña incorrecta";
}
  #2 (permalink)  
Antiguo 02/07/2010, 03:33
 
Fecha de Ingreso: febrero-2010
Mensajes: 7
Antigüedad: 12 años, 4 meses
Puntos: 0
Respuesta: Ayuda con inicio de session

¿Pero quieres que se distingan las mayúsculas y minúsculas o no?

Porque si quieres que se distingan, tienes que hacer un "COLLATE utf8_bin" al campo de MySQL para que sea case sensitive.

Otra solución es que en lugar de hacer una comparación de igualdad, puedes hacer un "LIKE BINARY" para comparar los valores. De tal modo que tu consulta quedaría así:

"SELECT * FROM usuarios WHERE usuario LIKE BINARY '$username' and password='$password'"

Pruebalo así a ver que tal te funciona
  #3 (permalink)  
Antiguo 02/07/2010, 03:40
 
Fecha de Ingreso: julio-2008
Mensajes: 201
Antigüedad: 14 años
Puntos: 11
Respuesta: Ayuda con inicio de session

Recuerda que también has comparado previamente en la consulta las variables $password y $username, por lo tanto te puedes ahorrar ese if.

Yo lo haría de la siguiente manera:
Código PHP:
Ver original
  1. <?PHP
  2. $username=$_POST['usuario'];
  3. $password=$_POST['password'];
  4. $result=mysql_query("SELECT * FROM usuarios WHERE usuario LIKE BINARY '$username' and password='$password'");
  5. $array = mysql_fetch_array($result);
  6. if($array != ""){
  7. $_SESSION["usuario"]=$username;
  8. header("Location: login_success.php");
  9. }
  10. else{
  11. echo "Usuario o contraseña incorrecta";
  12. }
  13. ?>

A ver si te sirve :)

Etiquetas: inicio, session
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 18:55.