EDITO: ¿En los controladores y modelos sería necesario?
Un saludo
|
|
#1 (permalink) |
![]() Fecha de Ingreso: diciembre-2007
Mensajes: 39
|
Comprobar sesion en el frontController y en la vista?
EDITO: ¿En los controladores y modelos sería necesario? Un saludo |
|
|
|
|
|
#2 (permalink) |
|
Moderador
![]() ![]() ![]() ![]() ![]() Fecha de Ingreso: mayo-2006
Ubicación: Queretaro, Mexico
Mensajes: 11.283
|
Re: Comprobar sesion en el frontController y en la vista?
Lo mejor es validar eso en el controlador especifico, dejale la tarea al frontController de iniciar la aplicación.
El inicio de sesión debe de ser por cada controlador y ahí se debe de hacer la validación del usuario si esta logueado o no. Trasladado a PHP Orientado a Objetos |
|
|
|
|
|
#3 (permalink) |
![]() Fecha de Ingreso: octubre-2004
Mensajes: 1.804
|
Re: Comprobar sesion en el frontController y en la vista?
Cita:
Es que deberia ser imposible que se pueda meter la URL de la vista directamente y que se ejecute algo.para que si algún usuario introduce una URL de las vistas directamente se le redirija a la página de login
Parte del controlador deberia encargarse de crear un objeto "usuario" a partir de la sesion. Luego se puede pasar ese objeto "usuario" al resto de objetos que necesiten hacer comprobaciones de login o permisos. |
|
|
|
|
|
#4 (permalink) |
![]() Fecha de Ingreso: diciembre-2007
Mensajes: 39
|
Re: Comprobar sesion en el frontController y en la vista?
Hola GatorV,
Te comento como lo estoy haciendo a ver que te parece: Para controlar las sesiones he pensado lo siguiente: De la clase Controller heredan todos los controladores, por lo que en el constructor de la misma comprobaré sesión y el constructor de la clase hija llamará al del padre: Código PHP:
Por otro lado tengo un problema, adjunto ficheros para que lo veáis más claro. index.php Código PHP:
Controlador de login: Código PHP:
Código PHP:
Hago un include de las variables con los datos de los directorios que declaro en el fichero config.php desde el FrontController e instancio un objeto $db para las conexiones a BD y al hacer el include del controlador y llamar a la función y esta a la del modelo, las variables me dice que no están declaradas(por lo que meto la ruta completa a mano) y el objeto $db desde el Usuario_model.php me dice que no existe, vamos que no hay persistencia de datos al hacer el include o entiendo que por instanciar el objeto no tengo acceso a otras variables "globales", entiendo que el problema es que mi sistema de programación no es el adecuado, ¿cómo lo puedo solucionar? Se me ocurre por ejemplo crearme una clase "model" y que todos los modelos hereden de esta y esta misma se encarge de instanciar el objeto de BD, pero ¿no será rizar el rizo ya demasiado? Espero vuestra ayuda, que ando un poco atascado... Muchas gracias :) |
|
|
|
|
|
#5 (permalink) |
![]() Fecha de Ingreso: diciembre-2007
Mensajes: 39
|
Re: Comprobar sesion en el frontController y en la vista?
Cita:
DarkJ, si tengo una vista tal que así:
Iniciado por DarkJ
Es que deberia ser imposible que se pueda meter la URL de la vista directamente y que se ejecute algo.
Parte del controlador deberia encargarse de crear un objeto "usuario" a partir de la sesion. Luego se puede pasar ese objeto "usuario" al resto de objetos que necesiten hacer comprobaciones de login o permisos. login.html Código HTML:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html><head></head><body><form action="../../index.php?dir=login&controller=login&accion=valida_user" method="post"> <table style="border: 1px solid rgb(0, 0, 0);" align="center"> <tbody><tr> <td align="right"> Nombre de usuario: <input size="15" maxlength="25" name="username" type="text"> </td> </tr> <tr> <td align="right"> Password: <input size="15" maxlength="25" name="password" type="password"> </td> </tr> <tr> <td align="center"> <input value="Login" type="submit"> </td> </tr> </tbody></table> </form></body></html> EDITO: El código que pongo no es una vista como tal. sería una página HTML, creo que no tiene mucho sentido lo que cuestiono aquí. Pero lo anterior sí. Un saludo, Última edición por Merodeador; 04-mar-2008 a las 07:45. |
|
|
|
|
|
#6 (permalink) |
|
Moderador
![]() ![]() ![]() ![]() ![]() Fecha de Ingreso: mayo-2006
Ubicación: Queretaro, Mexico
Mensajes: 11.283
|
Re: Comprobar sesion en el frontController y en la vista?
Te recomendaría para las clases como DB, uses el patrón Singleton, así podrás obtener la instancia de la clase desde cualquier modelo llamando al método getInstance(), asi te despreocupas si tu clase DB esta definida o no.
Saludos. |
|
|
|
|
|
#7 (permalink) |
![]() Fecha de Ingreso: diciembre-2007
Mensajes: 39
|
Re: Comprobar sesion en el frontController y en la vista?
Cita:
Hola, algo he visto en tu blog también sobre este patrón... Pero, ¿cómo hago para que las variables del fichero config.php, que por ahora son los directorios principales, persistan en la clase instanciada desde el controlador? He de hacer un include nuevamente en la clase controller de este fichero de configuración o existe alguna otra forma...Muchas gracias a todos por las respuestas. |
|
|
|
|
|
#8 (permalink) |
|
Moderador
![]() ![]() ![]() ![]() ![]() Fecha de Ingreso: mayo-2006
Ubicación: Queretaro, Mexico
Mensajes: 11.283
|
Re: Comprobar sesion en el frontController y en la vista?
¿Que es lo que guardas en tu archivo de config.php? La idea es que uses el patrón registry para guardar todo en un registro general, la clase registry debe de usar también el patrón Singleton para que puedas consultarlo desde cualquier punto de tu aplicación.
Saludos. |
|
|
|
|
|
#9 (permalink) |
![]() Fecha de Ingreso: diciembre-2007
Mensajes: 39
|
Re: Comprobar sesion en el frontController y en la vista?
Cita:
Muchas gracias GatorV, voy a ponerme un poco al día con los patrones Singleton y Registry. En el config.php declaraba una seríe de variables con los directorios principales: vistas, modelos y controladores. Muchas gracias por tu ayuda :) PD: Si la cosa sigue así, voy a tener que ponerte una dedicatoria en el libro del proyecto :P |
|
|
|
![]() |
| Herramientas | |
| Desplegado | |
|
|