Ver Mensaje Individual
  #1 (permalink)  
Antiguo 18/10/2006, 08:08
Avatar de hulray
hulray
 
Fecha de Ingreso: septiembre-2006
Mensajes: 630
Antigüedad: 17 años, 8 meses
Puntos: 3
problema sesiones

tengo este codigo:

session.php

session_start(); // Se destruye cualquier
session_unset(); // session anterior antes de
session_destroy(); // comenzar con el scrip. Esto es opcional

if($_POST){ /// Se comrpueba si $_POST tiene algun valor
/// Valores enviados por POST ///////////////////////////////////////
$nick = $_POST['nick']; // pasamos $_POST['nick'] a $nick
$pass = md5($_POST['pass']); // pasamos $_POST['pass'] a $pass codificado en MD5 que es como estan guardadas la pass en la BD.
/////////////////////////////////////////////////////////////////////
unset($_POST); /// Se destruye el array $_POST que ya no lo necesitamos
/////////////////////////////////////////////////////////////////////
if(eregi("^[-_A-Z0-9]{3,20}$",$nick)){ // Se comprueba si el nick es valido. ( Valido: entre 3 y 20 caracteres que sean '-', '_', de la 'A' a la 'Z' y 0 al 9 )
/// SQL ////////////////////////////////////////////////////////////////////
include("sql.php"); // Conexion a la BD.
/// Buscamos el registro en la BD que conincida con $nick. Solo buscamos un registro, por eso LIMIT 1
$resp = mysql_query("SELECT id_usuario,nick,pass,intentos FROM usuarios WHERE nick='$nick' LIMIT 1",$conexion);
////////////////////////////////////////////////////////////////////////////
if(mysql_num_rows($resp) == 1){ /// Se comprueba si dio un resultado
/// Si da un resultado es que existe tal usuario ...
$row = mysql_fetch_assoc($resp); /// ... guardamos los valores del registro en la variable $row
if($row['intentos'] < 5){ /// Ahora comprobamos si tiene menos de 5 intentos fallidos de conexion.
/// En el caso de tener menos de 5 intentos, se comprueba si la contraseña es correcta
if($pass == $row['pass']){
/// Si la contraseña es correcta ...
session_start(); /// Se inicia la session
$_SESSION['id_usuario'] = $row['id_usuario']; /// Variable de session que contiene la ID del usuario, ideal para autorizar a zonas restringidas
$_SESSION['usuario'] = $row['nick']; /// Variable de session que contiene el nombre del usuario

/// Ahora actualizamos el registro del usuario, con la fecha de la ultima conexion y la ultima ip,
/// ademas sumamos en +1 las conexiones que lleva el usuario en total desde su resgitro y ponemos los intentos fallidos a 0
$fecha = time(); // fecha en formato timestamp.
$ip = "xxx.xxx.xxx.xxx"; /// Ip del usuario, esto en si no vale de nada es un hueco para poner
/// una funcion que obtenga la ip mas adelante cuando haga la funcion, pero mientras tengo que usar un IP
/// SQL ///////////////////////////////////////////////////////////
mysql_query("UPDATE usuarios SET uconexion_fecha='$fecha', uconexion_ip='$ip' , conexiones=conexiones+1, intentos=0 WHERE id_usuario='$row[id_usuario]' LIMIT 1",$conexion);
///////////////////////////////////////////////////////////////////
header("Location: ../index.php"); /// una vez logueado redirigimos al usuario al index de la pagina o a su panel de control.

} else {
/// Si la contraseña es incorrecta le sumamamos a los intentos +1
/// SQL ///////////////////////////////////////////////////////////
mysql_query("UPDATE usuarios SET intentos=intentos+1 WHERE id_usuario='$row[id_usuario]' LIMIT 1",$conexion);
///////////////////////////////////////////////////////////////////
echo "Cotraseña incorrecta.";
}
} else { echo "Cuenta bloqueada ..."; } /// Salida para cuando supere los intentos de conexion fallidos
} else { echo "No existe tal usuario."; } /// Salida para cuendo no encuentre ningun usuario en la bd con el $nick enviado
} else { echo "nick no valido"; } /// Salida para cuendo el nick introducido en el formulario no sea valido
} else { header("Location: ../index.php"); } /// Salida para cuando no se envie nada por $_POST, osea que se acceda al script directamente sin usar el formulario.




login.htm

<body>
<form name="form1" method="post" action="session.php">
<pre>


Nick: <input name="nick" type="text" id="nick">
<p>Password: <input name="pass" type="password" id="pass">

<input type="submit" name="Submit" value="Iniciar">
</pre>
</p>
</form>
</body>
</html>


Me dice que el password no es valido, podrian decirme que error estoy cometiendo por favor...