Foros del Web » Programando para Internet » PHP »

login, sesiones, cookies...

Estas en el tema de login, sesiones, cookies... en el foro de PHP en Foros del Web. Muy buenas a todos. Tengo una pequeña empanada mental con esto. Os pongo en situación: - Una web con cierta parte exclusiva para usuarios (casi ...
  #1 (permalink)  
Antiguo 13/09/2007, 09:13
Avatar de peaso  
Fecha de Ingreso: enero-2002
Ubicación: Barcelona
Mensajes: 147
Antigüedad: 22 años, 3 meses
Puntos: 0
login, sesiones, cookies...

Muy buenas a todos.

Tengo una pequeña empanada mental con esto. Os pongo en situación:

- Una web con cierta parte exclusiva para usuarios (casi toda).
- modules.php: el rey del mambo. Es el que imprime las cabeceras y pies html, y a través de un parámetro "pg", el que carga el contenido de "pg.php".
Por ejemplo, para cargar la zona de usuario basta con llamar a "modules.php?pg=usuario".

Ahora quiero identificar un usuario. ¿Cómo me lo monto? Necesito más que pistas concretas la estructura general del sistema:

- Que modules.php compruebe si el usuario está identificado. Si no lo está, que llame a login.php (formulario de entrada). Y éste, cuando identifique al usuario, ¿qué hará?


Perdón por no preguntar nada concreto, pero estoy un pelín agotao con este tema. ¡Necesito un poco de luz!

Muchas gracias a todos.
Peaso
  #2 (permalink)  
Antiguo 13/09/2007, 09:27
Avatar de pzin
Moderata 😈
 
Fecha de Ingreso: julio-2002
Ubicación: Islas Canarias
Mensajes: 10.488
Antigüedad: 21 años, 8 meses
Puntos: 2114
Re: login, sesiones, cookies...

Hace unos días escribí éste post, tal vez te pueda ayudar, si no, pregunta de nuevo.
  #3 (permalink)  
Antiguo 13/09/2007, 09:41
Avatar de peaso  
Fecha de Ingreso: enero-2002
Ubicación: Barcelona
Mensajes: 147
Antigüedad: 22 años, 3 meses
Puntos: 0
Re: login, sesiones, cookies...

Cita:
Iniciado por Bonez Ver Mensaje
Hace unos días escribí éste post, tal vez te pueda ayudar, si no, pregunta de nuevo.
Justamente venía de ese hilo cuando decidí crear uno nuevo. El tema es que ando totalmente desorientado, quizás más ofuscado que otra cosa. Supongo que si lo dejo un día o dos lo veré de otra forma.

Dudas concretas sobre tu solución:

* El
Código PHP:
session_start() 
, ¿dónde deberá ir en mi caso? Supongo que al principio del modules.php, ¿verdad?

* ¿Dónde compruebo si el usuario está identificado? Si todo el sitio fuera privado, lo haría en modules.php pero, ¿y si no?

* En caso de que no esté identificado, ¿llamo a login.php que contendrá el formulario de login y su correspondiente comprobación con la BBDD?


Muchas gracias por tu ayuda, Bonez ;)


ANEXO: contenido principal de modules.php:
Código:
- Carga del funciones.php
- switch del parámetro "$pg". Para cada caso (página pedida), creo un title y completo alguna variable.
- Carga de header.php (html con cabecera principalmente)
- Carga de $pg.php
- Carga de footer.php
  #4 (permalink)  
Antiguo 13/09/2007, 15:49
Avatar de pzin
Moderata 😈
 
Fecha de Ingreso: julio-2002
Ubicación: Islas Canarias
Mensajes: 10.488
Antigüedad: 21 años, 8 meses
Puntos: 2114
Re: login, sesiones, cookies...

"Tienes" que hacerlo como más te convenga.

Yo personalmente siempre creo un archivo, llámalo "login.php" (en el que está session_start()), en el que se comprueba la existencia del usuario en caso de haber enviado el formulario de login. Puedes hacer por ejemplo, que el formulario se envíe a la misma página en el que esté el usuario enviando una variable por GET.
Éste sería el formulario que tendremos en form.php:
Código HTML:
<?
if(!$_SESSION['loged']) {
?>
<form action="?accion=login" method="POST"....
<?
}
?> 
Como el fichero login.php se incluye siempre, pues puedes poner en el archivo lo siguiente:
Código PHP:
if(i$_GET['accion']=="login") {
// Aquí puedes comprobar que el usuario exista y que la contraseña coincida
// En caso de que exista hacer esto:
header("Location: ".$_SERVER['HTTP_REFERER']); // Se reenvía donde estaba
exit();
// Si no coincide:
header("Location: ?error=login"); // Así puedes hacer if error = login mostrar mensaje de error
exit();

Comprobar si el usuario está identificado, puedes hacerlo o en una parte del código, o solo incluir una página si se está identificado:
Código PHP:
if($_SESSION['identificado']) include("unapagina.php");
else echo 
"No tienes acceso a ésta página. Identifícate o regístrate"
Por ejemplo, ésto mismo podrías hacer con el formulario, si está identificado no se muestra, y si no, se muestra.
También puedes meter tu switch dentro del if:
Código PHP:
if($_SESSION['identificado']) {
 switch()...

Hay mil maneras.

No sé si ha quedado muy claro, porque me lié un poco creo. Siempre puedes preguntar para lo que te queden dudas.

Saludos.
  #5 (permalink)  
Antiguo 13/09/2007, 16:01
Avatar de Scailay  
Fecha de Ingreso: septiembre-2007
Mensajes: 6
Antigüedad: 16 años, 7 meses
Puntos: 1
Re: login, sesiones, cookies...

Cita:
Iniciado por peaso Ver Mensaje
El session_start(), ¿dónde deberá ir en mi caso? Supongo que al principio del modules.php, ¿verdad?
Sí, al principio. Ya que las sesiones meten mano a las cookies, necesitas iniciar sesión antes que cualquier otra cosa.

Cita:
Iniciado por peaso Ver Mensaje
¿Dónde compruebo si el usuario está identificado? Si todo el sitio fuera privado, lo haría en modules.php pero, ¿y si no?

En caso de que no esté identificado, ¿llamo a login.php que contendrá el formulario de login y su correspondiente comprobación con la BBDD?
Al principio de cada script de la página puedes hacer una comprobación para ver si existe una variable de sesión tal que así:

Código PHP:
if (!(isset ($_SESSION['esta_identificado']))
    
// El usuario no está identificado, lo mandas a login.php (o al index.php o a donde quieras)
else
    
// Vía libre para lo que quieras 
  #6 (permalink)  
Antiguo 16/09/2007, 16:34
Avatar de peaso  
Fecha de Ingreso: enero-2002
Ubicación: Barcelona
Mensajes: 147
Antigüedad: 22 años, 3 meses
Puntos: 0
Re: login, sesiones, cookies...

Muchas gracias a ambos.

Durante estos días miro de hacerlo y os cuento ;)

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 06:10.