Foros del Web » Programación web » PHP »

Autenticacion usuarios PHP-MySQL

Estas en el tema de Autenticacion usuarios PHP-MySQL en el foro de PHP en Foros del Web. Hola a todos, haber os cuento lo que me está pasando... Tengo una parte de mi web que quiero proteger con un sistema de login. ...
  #1 (permalink)  
Antiguo 18/09/2007, 09:19
 
Fecha de Ingreso: septiembre-2007
Mensajes: 5
Antigüedad: 7 años
Puntos: 0
Autenticacion usuarios PHP-MySQL

Hola a todos, haber os cuento lo que me está pasando...

Tengo una parte de mi web que quiero proteger con un sistema de login.
El sistema sería:
index.php ---> control.php ---> websegura.php

Vale, en el index.php tengo el formulario.
En el control.php tengo esto:

Código PHP:
<?php
//vemos si el usuario y contraseña es válido
if ($_POST["usuario"]=="aquielusuario" && $_POST["password"]=="aquilapassword"){
    
//usuario y contraseña válidos
    //defino una sesion y guardo datos
    
session_start();
    
$_SESSION["autentificado"]= "SI";
    
header ("Location: websegura.php");
}else {
    
//si no existe le mando otra vez a la portada
    
header("Location: index.php?errorusuario=si");
}
?>
Esto funciona bien, pero claro sólo puedo tener un usuario, y lo que busco es autenticar con MySQL. Tengo la base de datos hecha y la tabla creada, pero cuando cambio ese control.php ( un usuario ), por el control.php ( sql ), no me autentica, no paso del formulario.

Os pongo el ćodigo del control.php para sql:

Código PHP:
<?php
//conecto con la base de datos
$conn mysql_connect("localhost","usuariosql","passwordsql");
//selecciono la BBDD
mysql_select_db("basedatossql",$conn);
//Sentencia SQL para buscar un usuario con esos datos
$ssql "SELECT * FROM usuarios WHERE usuario='$usuario' and password='$password'";
//Ejecuto la sentencia
$rs mysql_query($ssql,$conn);
//vemos si el usuario y contraseña es váildo
//si la ejecución de la sentencia SQL nos da algún resultado
//es que si que existe esa conbinación usuario/contraseña
if (mysql_num_rows($rs)!=0){
    
//usuario y contraseña válidos
    //defino una sesion y guardo datos
    
session_start();
    
session_register("autentificado");
    
$autentificado "SI";
    
header ("Location: aplicacion.php");
}else {
    
//si no existe le mando otra vez a la portada
    
header("Location: index.php?errorusuario=si");
}
mysql_free_result($rs);
mysql_close($conn);
?>
Alguien me puede hechar una mano ?

Gracias.
  #2 (permalink)  
Antiguo 18/09/2007, 09:53
Avatar de Seppo  
Fecha de Ingreso: marzo-2005
Ubicación: Buenos Aires, Argentina
Mensajes: 1.284
Antigüedad: 9 años, 5 meses
Puntos: 17
Re: Autenticacion usuarios PHP-MySQL

¿Por qué en un control.php hacés $_SESSION["autentificado"]= "SI"; y en el otro session_register("autentificado"); $autentificado = "SI"; ? Me parece raro eso...
Por otro lado, te fijaste si la consulta devuelve 0 o no? Tratá de bsucar el error, para ver si es en el código PHP, o si es en la consulta a la DB
  #3 (permalink)  
Antiguo 18/09/2007, 10:05
 
Fecha de Ingreso: septiembre-2007
Mensajes: 5
Antigüedad: 7 años
Puntos: 0
Re: Autenticacion usuarios PHP-MySQL

Hola, gracias por la respuesta tan rápida.

Si te soy sincero, ese código lo he sacado de ejemplos que he estado buscando en la web.
Estoy empezando con todo esto y me supera ...

Yo creo que el error está cuando consulta a la base de datos, que no encuentra nada en la tabla. Aunque si me voy a mysql y hago la consulta de forma manual si que me da el resultado correcto ...

En la tabla tengo: id, usuario, password; ahora mismo tengo 3 usuarios creados, con ninguno de los 3 me funciona.

Cualquier parte del código que veas mal, dime porque la cambio sin mas.

Muchas gracias.
  #4 (permalink)  
Antiguo 18/09/2007, 11:02
Avatar de Seppo  
Fecha de Ingreso: marzo-2005
Ubicación: Buenos Aires, Argentina
Mensajes: 1.284
Antigüedad: 9 años, 5 meses
Puntos: 17
Re: Autenticacion usuarios PHP-MySQL

Probá con lo siguiente...

Código PHP:
$ssql "SELECT * FROM usuarios WHERE usuario='" $_POST['usuario'] . "' and password='"$_POST['password'] . "'"
Si no funciona, antes de hacer la query fijate de hacer un echo de $ssql a ver si está bien la consulta. Si está bien, fijate que resultado te devuelve mysql_num_rows
  #5 (permalink)  
Antiguo 18/09/2007, 12:02
 
Fecha de Ingreso: septiembre-2007
Mensajes: 5
Antigüedad: 7 años
Puntos: 0
Re: Autenticacion usuarios PHP-MySQL

Hola, muy buenas,

Me tengo que leer varias veces lo que me propones, para entenderlo jeje ... Lo miro y te digo.

Tal vez, los valores que meto en el formulario, no llegan a la consulta?

Mil gracias.
  #6 (permalink)  
Antiguo 18/09/2007, 16:43
 
Fecha de Ingreso: septiembre-2007
Mensajes: 5
Antigüedad: 7 años
Puntos: 0
Re: Autenticacion usuarios PHP-MySQL

Ya funciona !!!!

Ehi tio un millón de gracias, ahora estaría bien saber el por que de todo esto ...

Por lo que veo, la nueva consulta si recoge correctamente los valores que meto en el formulario.

Me explicas el por que?
  #7 (permalink)  
Antiguo 19/09/2007, 14:16
Avatar de Seppo  
Fecha de Ingreso: marzo-2005
Ubicación: Buenos Aires, Argentina
Mensajes: 1.284
Antigüedad: 9 años, 5 meses
Puntos: 17
Re: Autenticacion usuarios PHP-MySQL

Estabas asumiendo register_globals on, de esa forma... es decir que las variables que se pasan por post están automáticamente en global... de la forma que lo puse especificas que lo busque entre esas variables
  #8 (permalink)  
Antiguo 19/09/2007, 17:24
 
Fecha de Ingreso: septiembre-2007
Mensajes: 5
Antigüedad: 7 años
Puntos: 0
Re: Autenticacion usuarios PHP-MySQL

Vale ya he estado leyendo algo sobre eso, por lo visto a partir de una versión en concreto de php, ese valor paso de on a off, para mejorar la seguridad.

Entiendo que poniendo esto:
Código PHP:
" . $_POST['usuario'] . " 
en vez de esto:
Código PHP:
'$usuario' 
se corrige el problema.

Tengo que leer mas sobre esto de la declaración de variables.

Gracias de nuevo, espero seguir en contacto.
  #9 (permalink)  
Antiguo 31/01/2008, 11:39
 
Fecha de Ingreso: enero-2008
Mensajes: 1
Antigüedad: 6 años, 7 meses
Puntos: 0
Re: Autenticacion usuarios PHP-MySQL

Estos son scripts que ofrece un sitio dende enseñan PHP.
A mi tampoco me funciona el 2do script. Si le cambio el 0 a 1 en el if, me pasan todos como autorizados, tanto los que tengo en la base como los que no están; si le dejo el cero todos aparecen como no autorizados. En todo caso es el 1 el que debe significar que se encontró algún elemento en la base y no el 0.
En ese sitio aparece también un script alternativo, ese funciona para el primer usuario de la base y rechaza a los no válidos, ¡fantástico! pero no acepta al segundo de la base. Tal parece que para usar los scripts que se ofrecen se debe saber un poco y cabecearse otro tanto. Si lo descubro te cuento. Puede que una combinación de ambos...
Hasta otra
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.
Tema Cerrado




La zona horaria es GMT -6. Ahora son las 15:20.
SEO by vBSEO 3.3.2