Ver Mensaje Individual
  #1 (permalink)  
Antiguo 05/05/2004, 17:34
pirrilon
 
Fecha de Ingreso: octubre-2003
Mensajes: 146
Antigüedad: 20 años, 6 meses
Puntos: 1
Ayuda para poder seguir trabajando :(

hola a tod@s:
Resulta que estoy haciendo una pagina web con php y mysql.Ahora estoy haciendo el sistema de autentificacion de usuarios en donde en index.php tengo 2 campos de registro,el login y el password que los paso a traves del metodo post a otro archivo php Yo he insertado un usuario mediante el phpmyadmin para probar el funcionamiento de la pagina.La password la he encriptado a traves de md5.El codigo que recoge las variables login y password es:


// Chequeamos si se está autentificandose un usuario por medio del formulario
if (isset($_POST['login_form']) && isset($_POST['password_form'])) {
$login = $_POST["login_form"];
// Encriptamos el password en formato md5 irreversible.
$password = md5($_POST["password_form"]);

if (($login == "") || ($password == "")) {
header("Location: http://localhost/index.php");
exit;
}

// Conexión base de datos
// Si no se puede conectar a la BD mostramos mensaje de error
$db_name = "proyecto";
$table_name = "personal";

$connection = mysql_connect("localhost","root","") or die(header("Location: $redir?error_login=0"));

$db = mysql_select_db($db_name, $connection)
or die("No se puede seleccionar la base de datos especificada");

//Sentencia SQL para buscar un usuario con esos datos
$sql = "SELECT * FROM $table_name
WHERE usuario = '$login'
";
//Ejecuto la sentencia
$result = mysql_query($sql)
or die (header("Location: $redir?error_login=1"));

$num = mysql_num_rows($result);

if ($num != 0) {
// Almacenamos los datos del Usuario en un array para empezar a chequear
$usuario_datos = mysql_fetch_array($result);
// Liberamos la memoria usada por la consulta, ya que tenemos estos datos en el Array.
mysql_free_result($result);
// Cerramos la Base de dtos.
mysql_close($connection);

// Chequeamos el nombre del usuario otra vez contrastándolo con la BD
// esta vez sin barras invertidas, etc ...
// Si no es correcto, salimos del script y redireccionamos a la
// página principal
if ($login != $usuario_datos['usuario']) {
header("Location: $redir?error_login=4");
exit;
}

// Si el password no es correcto ..
// salimos del script y redireccinamos hacia la página principal
if ($password != $usuario_datos['pass']) {
header("Location: $redir?error_login=3");
exit;
}

// En este punto, el usuario ya esta validado.
// Grabamos los datos del usuario en una sesión
// le damos un nombre a la sesion.
session_name("autentificado");
// inicia sesiones
session_start();

// Decimos al navegador que no "cachee" esta página.
session_cache_limiter('nocache,private');

// Asignamos variables de sesión con datos del Usuario para el uso en el
// resto de páginas autentificadas.

// definimos usuarios_id como identificador del usuario en nuestra BD
$_SESSION['usuario_id']=$usuario_datos['id'];
//definimos usuario_login como el nombre del usuario en nuestra BD
$_SESSION['usuario_login']=$usuario_datos['usuario'];
//definimos usuario_password con el password del usuario de la sesión actual (formato md5 encriptado)
$_SESSION['usuario_password']=$usuario_datos['pass'];


// Hacemos una llamada a si mismo (script) para que queden disponibles
// las variables de session en el array asociado $HTTP_...
$pag=$_SERVER['PHP_SELF'];
header("Location: $pag?");
exit;
} else {
// si no esta el nombre de usuario en la BD o el password ..
// se devuelve a pagina q lo llamo con error
header("Location: $redir?error_login=2");
exit;
}
} else {
// -------- Chequear si existe sesión -------

// usamos la sesion de nombre definido.
session_name("autentificado");
// Iniciamos el uso de sesiones
session_start();

// Chequeamos si están creadas las variables de sesión de identificación del usuario,
// El caso más común es el de una vez "matado" la sesión se intenta volver hacia atrás
// con el navegador.

if (!isset($_SESSION['usuario_login']) && !isset($_SESSION['usuario_password'])){
// Borramos la sesion creada por el inicio de session anterior
session_destroy();
die ("Error cod.: 2 - Acceso incorrecto!");
exit;
}
}
?>


Supuestamente este codigo deberia de funcionar bien pero me sale error,password no valida.He probado la combinacion de poner a la hora de autentificarme la password encriptada copiada del phpmyadmin para comprobar si funcionaba y si!!! me funciona!!! asi que el problema esta a la hora de encriptar la password introducida en el formulario de entrada $password = md5($_POST["password_form"]); que no coincide con la que esta en la base de datos,no se porque,lo mismo es que hacen una codificacion distinta en el phpmyadmin y el php despues,no se que pasara.O seguramente haya algun fallo por comillas o algo.Bueno espero que alguien me pueda ayudar.Muchas gracias anticipidas.Un saludo :)