Foros del Web » Programando para Internet » PHP »

Sistema de autentificación de usuarios

Estas en el tema de Sistema de autentificación de usuarios en el foro de PHP en Foros del Web. Hola, Tengo un sistema de autentificación de usuarios, pero no me funciona aquí les dejo el código para que le echen un vistazo: register.php Código ...
  #1 (permalink)  
Antiguo 17/04/2003, 06:36
Abs
 
Fecha de Ingreso: enero-2003
Mensajes: 216
Antigüedad: 21 años, 2 meses
Puntos: 0
Sistema de autentificación de usuarios

Hola,

Tengo un sistema de autentificación de usuarios, pero no me funciona aquí les dejo el código para que le echen un vistazo:

register.php
Código PHP:
<?php

// hacemos una conexion a la bd
$conexion mysql_connect('localhost','user','password');

// seleccionamos la Bd
mysql_select_db ("bd"$conexion);

//realizamos una consulta a la bd
$query mysql_query("SELECT * FROM usuarios"$conexion);

//definimos un array
$array mysql_fetch_array($query);

//realizamos un array de los campos que contienen el usuario y la contraseña
$arrayusuario = ($array["usuario"]); 
$arraypassword = ($array["password"]);

//vemos si el usuario y contraseña es váildo
//llamamos los arrays en las siguiente linea.
if ($_POST["usuario"]=="$arrayusuario" && $_POST["password"]=="$arraypassword"){
//usuario y contraseña válidos
//defino una sesion y guardo datos
session_start();
session_register("log");
$log "y";
header ("Location: index.php");
}else {
//si no existe le mando otra vez a la portada
header("Location: log.php");
}
?>

Cuando se ejecute esta página debería redireccionar hacia index.php con la variable $log="y" para activar el menú de cuenta pero no me redirecciona a ninguna parte.

Tampoco me redirecciona a la página de volver a escribir usuario y contraseña si los datos están mal.

¿Alguien sabe por qué?

Gracias
  #2 (permalink)  
Antiguo 17/04/2003, 09:10
Abs
 
Fecha de Ingreso: enero-2003
Mensajes: 216
Antigüedad: 21 años, 2 meses
Puntos: 0
¿¿¿¿¿¿¿¿¿Nadie sabe la respuesta???????
  #3 (permalink)  
Antiguo 17/04/2003, 11:45
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
No te impacientes .. apenas pasaron 3 horas desde que publicastes tu pregunta ..

Te recomiendo que despuesde de:

Código PHP:
header("location: algo.tal");
exit; 
// Termines el script ejecución .. 
Tambien usa:
Código PHP:
$query mysql_query("SELECT * FROM usuarios"$conexion) or die (mysql_error()); 
(así con todas las llamadas a funciones de mysql_xxx()

Código PHP:
$_POST["usuario"]==$arrayusuario && $_POST["password"]==$arraypassword){ 
No hace falta las comillas ...

Código PHP:
$arrayusuario $array["usuario"]; 
$arraypassword $array["password"]; 
No hace falta los () parentesis.

Y que no te quedes mirando el script si no te va a la primera .. USA echo $variable .. por todos los pasos que ha de seguir tu script y verifica que van tomando el valor que le corresponda ..

Se me olvidó ..

Al principio de tu script usa:
Código PHP:
error_reporting(E_ALL); 
Para ver si hay algun error que no se llega a mostrar por estar desactivado ... (cuando termines y detectes los errores .. deja de usarlo . quitalo)

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #4 (permalink)  
Antiguo 17/04/2003, 16:28
 
Fecha de Ingreso: noviembre-2001
Ubicación: Santiago de Chile
Mensajes: 31
Antigüedad: 22 años, 4 meses
Puntos: 0
haz lo siguiente cambia tu query de la forma

Select * from tabla where usuario = $_POST["usuario"] AND
password = $_POST["password"]
__________________
Divide y venceras
  #5 (permalink)  
Antiguo 17/04/2003, 16:45
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Entre tanto detallito .. se me pasó el DEtallazo ..: (grácias Eolo)

Código PHP:
$query mysql_query("SELECT * FROM usuarios WHERE usuario='".$_POST['usuario']."' AND password='".$_POST['password']."'"$conexion); 
Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #6 (permalink)  
Antiguo 17/04/2003, 18:06
Abs
 
Fecha de Ingreso: enero-2003
Mensajes: 216
Antigüedad: 21 años, 2 meses
Puntos: 0
Gracias por vuestra ayuda

Lo intentaré modificando el código como me decís a ver si funciona.

Saludos
  #7 (permalink)  
Antiguo 17/04/2003, 18:14
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Jejej.. pues espera .. porqué con el detallito de la consulta SQL que debes hacer .. ahora solo tienes que hacer un "IF" por el numero de resultados que te arroje la consulta ..

Oasese, en lugar de tu IF ($_POST .....) tendras que hacer

Código PHP:
$total=mysql_num_rows($query);

if (
$total 0){
// El usuaior es valido
} else {
// Nombre o password no correcta ...

(hay mas formas de ver el total de registros .. por ejemplo usando COUNT(*) de Mysql .. pero bueno . eso ya te lo dejao a tí para que lo investigues en el manual de Msyql y su apartado del SQL ..)

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #8 (permalink)  
Antiguo 19/04/2003, 05:04
Abs
 
Fecha de Ingreso: enero-2003
Mensajes: 216
Antigüedad: 21 años, 2 meses
Puntos: 0
Bueno pues gracias ya he modificado todo el código y funciona, gracias Cluster.

Saludos
  #9 (permalink)  
Antiguo 19/04/2003, 05:20
 
Fecha de Ingreso: febrero-2003
Mensajes: 9
Antigüedad: 21 años, 2 meses
Puntos: 0
Hola... para completar esto del sistema de autentificacion, decirte que si usas las variables de sesion el usuario estará logeado hasta que salga de la web pero cuando vuelva a entrar ya no lo estará. Por eso en vez de variables de sesion podrias usar cookies (salvo que tu intencion sea autentificar al usuario cada vez que entre en la web).

Pero bueno eso ya es un detalle sin mayor importancia.

Saludos
  #10 (permalink)  
Antiguo 19/04/2003, 13:22
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Pues .. AlexHdez .. una autentificación realmente segura es la que pide la contraseña al usuario cada vez q entre al sistema (bueno .. así lo entiendo yo) .. Y la mejor manéra de implentar eso es via Sessiones ..

Tambien puedes combinar un sistema de "sessiones-cookies" como por ejemplo hace este foro donde tu eliges (como usuario) si deseas usar la opción de "recordar mi contraseña otra vez q entre" .. o no ..

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #11 (permalink)  
Antiguo 19/04/2003, 13:25
 
Fecha de Ingreso: febrero-2003
Mensajes: 9
Antigüedad: 21 años, 2 meses
Puntos: 0
Pero yo he dicho lo de las cookies suponiendo que quieres hacer el tipico sistema de "registrate aqui gratis y obten no se que beneficios, con login y logout" en el que la seguridad no es muy importante pero si lo es la comodidad del usuario. Desde luego si quieres hacer un sistema de autentificacion para el panel de control de un servidor (por ejemplo) pues no hagas eso...

Saludos
  #12 (permalink)  
Antiguo 19/04/2003, 16:53
Abs
 
Fecha de Ingreso: enero-2003
Mensajes: 216
Antigüedad: 21 años, 2 meses
Puntos: 0
Hola
Bueno, no me funciona del todo el sistema de autentificación de usuarios. Veréis, tengo este archivo:

seguridad.php
Código PHP:
<? 

session_register
("log");  
if (
$log =="n")      
header("Location: [url]http://usuarios.lycos.es/freegamesonline/index.php?log=n[/url])
exit;
}
else {
header("
Location: [url]http://usuarios.lycos.es/freegamesonline/index.php?log=y[/url]")
exit;
?>
como véis es fácil, este fichero lo incluyo en las páginas que quiero restringir a los usuarios con un include(), y llama a la sesion "log" que es la que se crea al entrar como usuario. Pues bien no me funciona, ¿hay algún error el error lo da como "parse erro on line blablabla...

No se lo que me pasa pero los header() me fallan todos los que tengo en la página, alguien me explica la sintaxis correcta de header()? he probado con ; final, sin comillas.
Y todos los header de mi página están antes de cualquier salida html. ¿Alguien sabe que pasa?¿Tiene que ver con el host?(por cierto estoy en lycos tripod)

Saludos
  #13 (permalink)  
Antiguo 19/04/2003, 17:18
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Tienes varios "errores" ..

seguridad.php
Código PHP:
<? 

session_start
();  // inicia la session con SESSION_START() no con session_register() que es para "registrarla" ..
if ($HTTP_SESSION_VARS['log'] =="n") { // te faltó el { y usar las variables de sesión como globales no es recomendable ..     
   
header("Location: index.php?log=n"); // te faltó ; de cierre .. El redireccionamiento es recomendable que lo hagas Absoluto no relativo ..
exit;
} else {
   
header("Location: index.php?log=y"); // Otro ; te faltó .. 
exit;
// te falto el cierre del else ..
?>
A todo esto .. el log=n o y que pasas por GET a index.php en caso de exito o fallo de la autentificación .. no tiene mucho sentido .. pues ya tienes para eso esa variable en la sesión, en esa sesion log .. Leela en tu index.php esa variable de session $HTTP_SESSION_VARS['log'] (previo inico de sessiones session_start() .. ) y te gestionas el mensaje de error/exito o lo que requieras hacer con eso .. pero leyendo ese valor de esa variable de sesión. NO hace falta que antes paseando duplicados de variables por el URL que ademas son suceptibles de ser alterados intencionalmente (he de ahí que se usan las sessiones para propagar variables entre scripts que sean potencialmente peligrosas si se editase su valor ..)

Un saludo,
  #14 (permalink)  
Antiguo 19/04/2003, 17:20
Abs
 
Fecha de Ingreso: enero-2003
Mensajes: 216
Antigüedad: 21 años, 2 meses
Puntos: 0
vaya, el autoconvertir url de postear mensajes me convirtió mi url en enlace bueno es así:

Código PHP:
<? 

session_register
("log");  
if (
$log !="y"){      
header("Location: http://usuarios.lycos.es/freegamesonline/index.php?log=n);
exit;
}
?>
Creo que sé porque es, me parece que es porque no existe la sesion "log" y por eso no la toma, porque quiero que el script también funcione en la página principal, tendré que hacerlo con cookies...

Saludos
  #15 (permalink)  
Antiguo 19/04/2003, 17:22
Abs
 
Fecha de Ingreso: enero-2003
Mensajes: 216
Antigüedad: 21 años, 2 meses
Puntos: 0
Hola

Gracias cluster

Saludos
  #16 (permalink)  
Antiguo 19/04/2003, 17:24
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Cita:
Creo que sé porque es, me parece que es porque no existe la sesion "log" y por eso no la toma, porque quiero que el script también funcione en la página principal, tendré que hacerlo con cookies...
Lee mi respuesta .. estas usando session_register() .. eso no es correcto .. ademas que tampco es muy correcto asumir como globales las variabels de sesion!!!

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #17 (permalink)  
Antiguo 20/04/2003, 16:20
Abs
 
Fecha de Ingreso: enero-2003
Mensajes: 216
Antigüedad: 21 años, 2 meses
Puntos: 0
Hola,
Me sigue sin funcionar el sistema de autentificación de usuarios.
En index.php me da parse error in line blabla, y no carga la página.

Este es el script:
index.php

Código PHP:
<?session_start('log');
       if (
$_SESSION['log']=="y"{ echo "¡Hola, '.$_SESSION
['usuario'].'!"
;
}

else{

echo 
'<FORM METHOD="POST" ACTION="register.php"></b>
       <b><font face="Verdana" size="1" color="#003399">Usuario:</font></b> <INPUT NAME="usuario" size="14" style="border-style: solid; border-width: 1"><br>
       <span lang="es"><b><font face="Verdana" size="1" color="#003399">Password</font></b></span><br>       <INPUT TYPE="password" NAME="password" size="14" style="border-style: solid; border-width: 1"><br>       <INPUT TYPE="submit" value="Entrar" style="font-size: 8pt; color: #FFFFFF; font-family: Verdana; font-weight: bold; border: 1px solid #000000; background-color: #99B1BF"></form></td>'
;

}
?>
Lo que quiero es que en la página principal si se ha logeado que le muestre ¡hola, (nombre de usuario)! y si no el formulario de usuario y contraseña para entrar a la cuenta. ¿Puede ser que no funcione porque al entrar la primera vez no se haya registrado la sesion?


Saludos
  #18 (permalink)  
Antiguo 20/04/2003, 19:31
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
session_start('log');

ESO no es correcto .. Please .. lee la documentación de uso de las funciones de sesiones ...

http://www.php.net/manual/en/ref.session.php

Solo tienes que hacer session_start() .. (te lo he puesto varias veces y en las FAQ's tienes ejemplos tambien ..)

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #19 (permalink)  
Antiguo 22/04/2003, 04:58
Abs
 
Fecha de Ingreso: enero-2003
Mensajes: 216
Antigüedad: 21 años, 2 meses
Puntos: 0
Hola,

He cambiado el session_start('log') por el session_start() y no me funciona, ¿alguien puede revisar el código bien? no funciona da parse error in line 146, creo que es en session_start(); o if ($_session...
Este es el script:
Código PHP:
<?session_start();
       if (
$_SESSION['log']=="y"{ echo "¡Hola, '.$_SESSION['usuario'].'!";}else{echo '//aquí va el formulario de entrar a la cuenta  ';}?>
¿Alguien me puede ayudar?

Saludos

Última edición por Abs; 22/04/2003 a las 05:05
  #20 (permalink)  
Antiguo 22/04/2003, 05:03
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 21 años, 10 meses
Puntos: 16
Hola,

Regla de los parentesis () o de las {}: El numero de ( debe ser igual al numero de ). Idem para {}. Revisa que te falla un ) en el if.

Y procura ir aprendiendo poco a poco, pero cogiendo bien los conceptos.

Saludos.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #21 (permalink)  
Antiguo 22/04/2003, 05:11
Abs
 
Fecha de Ingreso: enero-2003
Mensajes: 216
Antigüedad: 21 años, 2 meses
Puntos: 0
Gracias Josemi

Bueno vamos mejorando, ahora solo me sale:

Parse error: parse error, expecting `T_STRING' or `T_VARIABLE' or `T_NUM_STRING' in index.php on line 146

¿alguien puede seguir revisando el código?

Código PHP:
<?session_start();
       if (
$_SESSION['log']=="y"){ echo "¡Hola, '.$_SESSION['usuario'].'!";}else{echo '//aquí va el formulario de entrar a la cuenta  ';}?>
Saludos
  #22 (permalink)  
Antiguo 22/04/2003, 05:16
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 21 años, 10 meses
Puntos: 16
Si usas " como delimitador de un texto, usalo tanto al comienzo y al final. Abrir " y cerrar con ' no delimita un texto.

Suerte.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #23 (permalink)  
Antiguo 22/04/2003, 11:31
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Abs . sinceramente .. No sé como te metes con "sesiones" y Mysql (base de datos) si todavía no tienes claro la sintax básica de PHP ..

Un saludo,

pd: tomatelo como consejo, es sin animo de ofender. Recuerda que las cosas si las aprendes desde la base no tendras problemas en el futuro como los estas teniendo.
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #24 (permalink)  
Antiguo 22/04/2003, 16:05
Abs
 
Fecha de Ingreso: enero-2003
Mensajes: 216
Antigüedad: 21 años, 2 meses
Puntos: 0
Tranquilo cluster no me lo tomo como ofensa.

Si sé la sintax básica de PHP. Lo que pasa que soy tan desordenado y amontono tanto el código que se me pasan cosas y errores de "novato". Y después de repasar el código me doy cuenta de los errores, pero al ir tan rápido buscando los errores no me doy cuenta de todo.
De todas maneras gracias por el consejo Cluster. Tendré que fijarme más en mis códigos.

Saludos
  #25 (permalink)  
Antiguo 22/04/2003, 16:36
Abs
 
Fecha de Ingreso: enero-2003
Mensajes: 216
Antigüedad: 21 años, 2 meses
Puntos: 0
Bueno ya he logrado que la página principal se vea.
Ahora solo falta optimizar el código.
Que más decir, gracias a todos los que me habéis ayudado en especial Cluster (como no) y Josemi.
Cuando termine de optimizar el código os daré la dirección para que la reviséis.

Saludos
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 04:29.