Foros del Web » Programando para Internet » PHP »

Blog php : Formulario

Estas en el tema de Blog php : Formulario en el foro de PHP en Foros del Web. 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... ...
  #1 (permalink)  
Antiguo 05/02/2011, 12:16
 
Fecha de Ingreso: febrero-2011
Ubicación: define ('Ubicación', 'Mi_casa');
Mensajes: 21
Antigüedad: 13 años, 2 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!
  #2 (permalink)  
Antiguo 05/02/2011, 18:10
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Tema movido desde Configuración PHP a PHP
  #3 (permalink)  
Antiguo 05/02/2011, 18:19
 
Fecha de Ingreso: noviembre-2009
Mensajes: 535
Antigüedad: 14 años, 5 meses
Puntos: 25
Respuesta: Blog php : Formulario

en tu funcion de usUsuario tienes que iniciar la session se los datos son corrector
  #4 (permalink)  
Antiguo 06/02/2011, 08:01
 
Fecha de Ingreso: febrero-2011
Ubicación: define ('Ubicación', 'Mi_casa');
Mensajes: 21
Antigüedad: 13 años, 2 meses
Puntos: 0
Respuesta: Blog php : Formulario

No se a que te refieres explicatte o pon el codigo que tengo que añadir o modiffficar por favor.
  #5 (permalink)  
Antiguo 06/02/2011, 08:17
Avatar de Patriarka  
Fecha de Ingreso: enero-2011
Ubicación: Moreno, Buenos Aires, Argentina
Mensajes: 2.851
Antigüedad: 13 años, 2 meses
Puntos: 288
Respuesta: Blog php : Formulario

Cita:
Iniciado por kechu;3733973


esUsuario.php :

[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;


}

?>[/PHP]


HOLA ESTA MEDIO REBUSCADA TU QUERY, HACE ALGO MAS SENCILLO:

Código PHP:
<?php

function esUsuario $usuario$password$conexion ) {
    
//ESTO LO PODIAS HACER CON JAVA SRCIPT, PERO TAMBIEN ES VALIDO
    
if ($usuario=='' || $password=='') return false;
    
        
//ACA TENIAS QUE HACER LA QUERY DE UNA VES
    
$query "SELECT idUsuario, usuario, password, tipo FROM `usuarios` WHERE usuario = '$usuario' AND password = '$password' ";
    
$resultado mysql_query($query$conexion);
    
        
// SI HAY RESULTADOS
        
if( mysql_num_rows($resultado) > 0){
            
$row mysql_fetch_array ($resultado);
        return 
$row;
        }else{
            echo 
'NO HAY RESULTADOS';
        }
        
}

?>
  #6 (permalink)  
Antiguo 06/02/2011, 11:58
 
Fecha de Ingreso: febrero-2011
Ubicación: define ('Ubicación', 'Mi_casa');
Mensajes: 21
Antigüedad: 13 años, 2 meses
Puntos: 0
Respuesta: Blog php : Formulario

Cita:
Iniciado por Patriarka Ver Mensaje
HOLA ESTA MEDIO REBUSCADA TU QUERY, HACE ALGO MAS SENCILLO:

Código PHP:
<?php

function esUsuario $usuario$password$conexion ) {
    
//ESTO LO PODIAS HACER CON JAVA SRCIPT, PERO TAMBIEN ES VALIDO
    
if ($usuario=='' || $password=='') return false;
    
        
//ACA TENIAS QUE HACER LA QUERY DE UNA VES
    
$query "SELECT idUsuario, usuario, password, tipo FROM `usuarios` WHERE usuario = '$usuario' AND password = '$password' ";
    
$resultado mysql_query($query$conexion);
    
        
// SI HAY RESULTADOS
        
if( mysql_num_rows($resultado) > 0){
            
$row mysql_fetch_array ($resultado);
        return 
$row;
        }else{
            echo 
'NO HAY RESULTADOS';
        }
        
}

?>
Hola. He modificado lo que has puesto y me sigue igual :S pone esto: "El nombre de usuario o contraseña no coinciden."

Y el pass y el user estan bien xD esto es mas raro!
  #7 (permalink)  
Antiguo 06/02/2011, 12:12
Avatar de Patriarka  
Fecha de Ingreso: enero-2011
Ubicación: Moreno, Buenos Aires, Argentina
Mensajes: 2.851
Antigüedad: 13 años, 2 meses
Puntos: 288
Respuesta: Blog php : Formulario

FIJATE BIEN QUE PASA CON EL MD5,
PROBA VARGAR UN USUARIO CON UN PASSWORD COMUN (SIN MD5)
Y A ESTA LINEA SACALE EL MD5, Y LOGUATE ASI.

SI ENTRAS EL PROBLEMA ESTA EN EL MANEJO DEL MD5.

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';
}
  #8 (permalink)  
Antiguo 06/02/2011, 12:12
 
Fecha de Ingreso: febrero-2011
Ubicación: define ('Ubicación', 'Mi_casa');
Mensajes: 21
Antigüedad: 13 años, 2 meses
Puntos: 0
Respuesta: Blog php : Formulario

Hola, perdon ya me va ya se por que no funcionaba porque introduci mi pass directamente en la db, sin md5. Al pedir en ingresar.php el pass con md5 me salia error. Gracias patriarka por la ayuda ^^, que tambien me faltaba lo de passwords.

Saludos!
  #9 (permalink)  
Antiguo 06/02/2011, 12:21
Avatar de Patriarka  
Fecha de Ingreso: enero-2011
Ubicación: Moreno, Buenos Aires, Argentina
Mensajes: 2.851
Antigüedad: 13 años, 2 meses
Puntos: 288
Respuesta: Blog php : Formulario

Cita:
Iniciado por kechu Ver Mensaje
Hola, perdon ya me va ya se por que no funcionaba porque introduci mi pass directamente en la db, sin md5. Al pedir en ingresar.php el pass con md5 me salia error. Gracias patriarka por la ayuda ^^, que tambien me faltaba lo de passwords.

Saludos!
ME MERESCO UNA MEDALLA
  #10 (permalink)  
Antiguo 06/02/2011, 12:27
 
Fecha de Ingreso: febrero-2011
Ubicación: define ('Ubicación', 'Mi_casa');
Mensajes: 21
Antigüedad: 13 años, 2 meses
Puntos: 0
Respuesta: Blog php : Formulario

Cita:
Iniciado por Patriarka Ver Mensaje
ME MERESCO UNA MEDALLA
jajajaja la verdad es que sí, eres el unico que tiene tanta paciencia xD .
  #11 (permalink)  
Antiguo 06/02/2011, 14:27
Avatar de jonasanx  
Fecha de Ingreso: enero-2011
Ubicación: La Via Lactea, Mexico, Mexico, Mexico
Mensajes: 134
Antigüedad: 13 años, 3 meses
Puntos: 4
Respuesta: Blog php : Formulario

Pues ya que el problema esta solucionado solo me gustaría aportar un par de observaciones.

1. En tus consultas a la base de datos donde una variable provenga de un formulario, utiliza mysql_real_escape_string, tu sabes, seguridad ante todo. ;D

2.
Cita:
//ESTO LO PODIAS HACER CON JAVA SRCIPT, PERO TAMBIEN ES VALIDO
if ($usuario=='' || $password=='') return false;
No solo basta hacerlo del lado del cliente (javascript) también debes poner seguridad del lado del servidor.

:D
  #12 (permalink)  
Antiguo 06/02/2011, 14:43
Avatar de Patriarka  
Fecha de Ingreso: enero-2011
Ubicación: Moreno, Buenos Aires, Argentina
Mensajes: 2.851
Antigüedad: 13 años, 2 meses
Puntos: 288
Respuesta: Blog php : Formulario

Cita:
Iniciado por jonasanx Ver Mensaje
Pues ya que el problema esta solucionado solo me gustaría aportar un par de observaciones.

1. En tus consultas a la base de datos donde una variable provenga de un formulario, utiliza mysql_real_escape_string, tu sabes, seguridad ante todo. ;D

2.
No solo basta hacerlo del lado del cliente (javascript) también debes poner seguridad del lado del servidor.

:D
POR ESO MISMO, DEJE QUE ES VALIDO VALIDARLO TANTO EN EL CLIENTE COMO EN EL SERVER.......
  #13 (permalink)  
Antiguo 06/02/2011, 14:46
Avatar de jonasanx  
Fecha de Ingreso: enero-2011
Ubicación: La Via Lactea, Mexico, Mexico, Mexico
Mensajes: 134
Antigüedad: 13 años, 3 meses
Puntos: 4
Respuesta: Blog php : Formulario

Cita:
Iniciado por Patriarka Ver Mensaje
POR ESO MISMO, DEJE QUE ES VALIDO VALIDARLO TANTO EN EL CLIENTE COMO EN EL SERVER.......
¡Ah! ok, hehe, no lo había entendido así, pero igual, creo que no esta de mas recalcar. :D (escribir en Internet con mayúsculas sugiere que estas gritando...) :(
  #14 (permalink)  
Antiguo 07/02/2011, 09:53
 
Fecha de Ingreso: febrero-2011
Ubicación: define ('Ubicación', 'Mi_casa');
Mensajes: 21
Antigüedad: 13 años, 2 meses
Puntos: 0
Respuesta: Blog php : Formulario

Ya esta xD no se peleen.
De todas formas gracias a los dos por los consejos.

Etiquetas: blog, formulario
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 12:22.