Bienvenido a datoweb.com!! En este foro podrás encontrar ayuda sobre diseño y desarrollo web en general. Si quieres formar parte de esta comunidad para pedir ayuda o colaborar ayudando a otros usuarios del foro solo tienes que registrarte desde el siguiente enlace: Registrarse en el Foro

Error al iniciar sesión con password encriptado a md5

Hola, amigos de dato WEB: Ante todo pido disculpas si mi intrusión en este foro no es acertada, pues desconozco si es para expertos en programación o para todo el mundo.

Hace unos días que vengo siguiendo el tutorial de youtube "Tutorial pagina web multisitio php y dreamweaver ", y, aunque sigo con él, tengo un problema que no soy capaz de solucionar.

He tratado de seguir al pie de la letra todas las explicaciones y, aun así, hay algo que no me funciona bien. Tiene relación con el "login", ya que puedo registrar usuarios y el phpMyAdmin me los guarda, pero cuando intento iniciar sesión me manda a la página de "error" (sin anunciarme ningún error de programación). He revisado la base de datos y creo que todo está OK; no obstante, por muchos usuarios que registre, no me deja iniciar sesión con ninguno. Imagino que debe ser una tontería y un error insignificante, pero no soy capaz de dar con él a pesar de volver sobre mis pasos y repetirlo desde ese momento.

Po si alguien pudiese ayudarme, os dejo el código tal y como lo tengo:
<?php require_once('../Connections/conexion.php'); 
// *** Validate request to login to this site.
if (!isset($_SESSION)) {
  session_start();
}

$loginFormAction = $_SERVER['PHP_SELF'];
if (isset($_GET['accesscheck'])) {
  $_SESSION['PrevUrl'] = $_GET['accesscheck'];
}

if (isset($_POST['nombre'])) {
  $loginUsername=$_POST['nombre'];
  $password=md5($_POST['password']);
  $MM_fldUserAuthorization = "";
  $MM_redirectLoginSuccess = "bienvenida.php";
  $MM_redirectLoginFailed = "error.php";
  $MM_redirecttoReferrer = false;
  mysql_select_db($database_conexion, $conexion);
  
  $LoginRS__query=sprintf("SELECT nombre, password, estado, id FROM users WHERE nombre=%s AND password=%s AND estado=1",
    GetSQLValueString($loginUsername, "text"), GetSQLValueString($password, "text")); 
   
  $LoginRS = mysql_query($LoginRS__query, $conexion) or die(mysql_error());
  $miIdUsuario= mysql_fetch_assoc($LoginRS);
  $loginFoundUser = mysql_num_rows($LoginRS);
  if ($loginFoundUser) {
     $loginStrGroup = "";
    
    if (PHP_VERSION >= 5.1) {session_regenerate_id(true);} else {session_regenerate_id();}
    //declare two session variables and assign them
    $_SESSION['MM_Username'] = $loginUsername;
    $_SESSION['MM_UserGroup'] = $loginStrGroup;
    $_SESSION['MM_Id'] = $miIdUsuario ["id"];      

    if (isset($_SESSION['PrevUrl']) && false) {
      $MM_redirectLoginSuccess = $_SESSION['PrevUrl'];    
    }
    header("Location: " . $MM_redirectLoginSuccess );
  }
  else {
    header("Location: ". $MM_redirectLoginFailed );
  }
}
?>
Gracias de antemano por la ayuda que alguien pueda prestarme.
Luz Esmeralda
5
Puntos
3297
Visitas
4
Resp
Por LuzEsmeralda hace 130 meses
Principiante
Respuesta #1
buenas! si este foro esta creado para ayudar en todos los sentidos de entorno web, tu problema pasa a menudo y te voy a decir las dos razones por las que te puede pasar
1- Veo que en la linea 46 estas cotejando el password en md5 en tu base de datos por hay vamos bien, la pregunta es: en tu base de datos esta en md5?

Asugurate de que la columna de la base de datos que guarda el password sea un varchar de mas de 50 caracteres..... por que? por que un password encriptado en md5 aunque sea solo de 4 digitos al encriptarlo pasa a tener mas de 25 por eso es muy importante que tenga espacio de sobra para guardarlo completamete.

2- Esta cuestión es la menos probable, asegurate tambien de que la pagina registro guarde en base de datos la password en md5:
GetSQLValueString(md5($_POST['password']), "text"));
por favor si te ayudo la respuesta avisa para pasar este tema a solucionados.. un saludo!!
5
Puntos
Por zeuskx hace 130 meses
Administrador Sitio web
Respuesta #2
¡¡Muchas gracias, Zeuskx!! Tu ayuda ha sido de gran utilidad: rápida, sencilla y eficiente. Tu solución ha conseguido mostrarme lo "tonta" que he sido al limitar los caracteres del password a menos de 50. En adelante trataré de seguir todo al pie de la letra (al menos hasta que aprenda qué se puede hacer y qué no en la base de datos).
PROBLEMA RESUELTO
Muchas gracias, nuevamente, y por mí puedes zanjar el tema.
Un saludo. Luz Esmeralda.
5
Puntos
Por LuzEsmeralda hace 130 meses
Principiante
Respuesta #3
me alegro de que lo tengas ya solucionado, a todos nos a pasado alguna vez, vas muy bien con el tuto y llevas el código muy limpio sigue así y ánimo!
cierro tema..
6
Puntos
Por zeuskx hace 130 meses
Administrador Sitio web
Respuesta #4
Me ha servido este post, tenia el mismo problema que el amigo... Gracias
0
Puntos
Por Dimetrix hace 100 meses
Principiante
Compartir en facebook
Compartir en twitter
Compartir
Para comentar Inicia sesión o Registrate