Ver Mensaje Individual
  #1 (permalink)  
Antiguo 05/02/2011, 12:16
kechu
 
Fecha de Ingreso: febrero-2011
Ubicación: define ('Ubicación', 'Mi_casa');
Mensajes: 21
Antigüedad: 13 años, 3 meses
Puntos: 0
Blog php : Formulario

Hola!

En mi web creada a mano he hecho una parte en la que hay un blog con php y Mysql.
Lo tengo acabo pero... tengo un problema (seguramente fallo tonto).
Me funciona todo, registrarse, dejar comentarios, pero no me funciona el de inicio de sesión, todo está conectado con la base de datos. Por ejemplo: Registro un usuario, y me sale en la bd que lo he comprobado, pero cuando me quiero conectar con ese usuario. Pongo el usser y el pass y me dice que no coincide con el de la base de datos xD.
Y he estado buscando horas el fallo y no lo encuentro. la contraseña la e puesto veintemil veces y me dice que no y la contraseña esta bien.

Aqui los codigos:
Ingresar.php :
Código PHP:
<?php

// inicio sesiones
session_start ();

// archivos
require_once 'admin/config.php';
require_once 
'admin/conexion.php';
require_once 
'admin/esUsuario.php';

// obtengo puntero de conexion con la db
$dbConn conectar();

// verificacion de que no este conectado el usuario
if ( !empty( $_SESSION['usuario'] ) && !empty($_SESSION['password']) ) {
    if ( 
esUsuario$_SESSION['usuario'], $_SESSION['password'], $dbConn ) ) {
        
header'Location: index.php' );
        die;
    }
}

// si se envio el formulario
if ( !empty($_POST['submit']) ) {
    
    
// definimos las variables
    
if ( !empty($_POST['usuario']) )     $usuario     $_POST['usuario'];
    if ( !empty(
$_POST['password']) )    $password     $_POST['password'];
    
    
// completo la variable error si es necesario
    
if ( empty($usuario) )     $error['usuario']         = 'Es obligatorio completar el nombre de usuario';
    if ( empty(
$password) ) $error['password']         = 'Es obligatorio completar la contraseña';
    
    
// si no hay errores registro al usuario
    
if ( empty($error) ) {
        
        
// verifico que los datos ingresados corresopndan a un usuario
        
if ( $arrUsuario esUsuario($usuario,md5($password),$dbConn) ) {
            
            
// definio las sesiones
            
$_SESSION['usuario']     = $arrUsuario['usuario'];
            
$_SESSION['password']    = $arrUsuario['password'];
            
            
header('Location: index.php');
            die;
            
        } else {
            
$error['noExiste']         = 'El nombre de usuario o contrase&ntilde;a no coinciden';
        }
        
    }
        
}

?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    <title>Blog Personal</title>
</head>

<body>

    <h1>Inicio de sesión</h1>
    
    <? if (!empty($error)) { ?>
        <ul>
        <? foreach ($error as $mensaje) { ?>
            <li><?= $mensaje ?></li>
        <? ?>
        </ul>
    <? ?>
    
    <form action="ingresar.php" method="post">
    
        <p>
            <label for="usuario">Nombre de usuario</label><br />
            <input name="usuario" type="text" value="<? if ( ! empty($usuario) ) echo $usuario?>" />
        </p>
        <p>
            <label for="password">Contrase&ntilde;a</label><br />
            <input name="password" type="password" value="<? if ( ! empty($password) ) echo $password?>" />
        </p>
        <p>
            <input name="submit" type="submit" value="Ingresar" />
        </p>
        
    </form>


</body>
</html>
esUsuario.php :

Código PHP:
<?php

function esUsuario $usuario$password$conexion ) {
    
    
// verifica que esten los dos campos completos.
    
if ($usuario=='' || $password=='') return false;
    
    
// busqueda de los datos de usuarios para loguear.
    
$query "SELECT idUsuario, usuario, password, tipo FROM `usuarios` WHERE usuario = '$usuario'";
    
$resultado mysql_query ($query$conexion);
    
$row mysql_fetch_array ($resultado);
    
$password_from_db $row ['password'];
    unset(
$query);
            
    
// verifica que el pass enviado sea igual al pass de la db.
    
if ( $password_from_db == $password ) {
        return 
$row;
    } else return 
false;
    
    
}

?>
conexion.php :

Código PHP:
<?php

function conectar () {
    
    
$db_con mysql_pconnect (DB_SERVER,DB_USER,DB_PASS);
    if (!
$db_con) return false
    if (!
mysql_select_db (DB_NAME$db_con)) return false;
    return 
$db_con

}

?>
config.php :

Código PHP:
<?php

// constantes de conexion de db
define'DB_SERVER''server' );
define'DB_NAME''dbname');
define'DB_USER''user');
define'DB_PASS''pass');

?>
Bueno estos son los archivos que estan interconectados para ingresar. Creo que el fallo estara en alguno de los tres archivos.
He puesto comentarios para separar un poco los codigos entre si en cada archivo en los define he quitado mis configuraciones.

Espero que puedan ayudarme, muchas gracias.
Saludos!