Pregunta

Tengo una clase llamada del usuario con la función estática loginRequired (), que devuelve false si el usuario está conectado y verdadero si el usuario está conectado a cabo. También añade un error a una clase de error que creé que le dice a la persona que utiliza el sitio que tienen que estar registrado para ver el contenido.

La idea es que para la parte superior de cada función que requiere que el usuario se registra en, escribimos este código:

if(User::loginRequired()) return;

¿Cuál es la salida el error y volver inmediatamente de la función. Prefiero hacer esto, sin embargo:

User::loginRequired();

Y regreso de la función de llamada en el interior de la función loginRequired ... sino porque loginRequired () está en una clase separada en un archivo separado, esto no funcionará. ¿Es posible volver de la función que llama a loginRequired (), dentro loginRequired ()?

Gracias.

¿Fue útil?

Solución

La forma en que he visto una serie de aplicaciones de código abierto de manejar esto es por tener una función require_login() que realiza una redirección caso de que el usuario no se ha autentificado.

Otros consejos

No estoy seguro de que puede hacer exactamente lo que quiere, sin embargo, es posible que desee buscar en el uso excepciones . Esto le permitiría lanzar una excepción en la función de usuario :: loginRequired y atraparlo en algún nivel superior. También se podría contemplar la utilización de la href="http://us3.php.net/exit" rel="nofollow noreferrer"> salida función de PHP.

Es el contenido dentro de la página real dinámico? Lo que quiero decir es, qué necesito para autenticar sólo para ver otra cosa que no sea la página de inicio de sesión, o puedo ver algunas cosas cuando estoy entrado en el sistema y otras cosas cuando no estoy, etc? Porque si todo el / la sección de directorios del servidor está detrás de una pantalla de registro sólo podría añadir algo al archivo .htaccess del directorio que vuelve a dirigir a nadie no se ha identificado, etc.

Por otro lado, usted podría tener que sostener el archivo de estado de conexión incluido en cualquier página / script que está viendo el usuario, con el archivo incluido devolver sólo el estado de conexión en lugar de todo su contenido. Esto está cubierto por incluye en el Ejemplo 5, "incluir () y la instrucción de retorno ()". Si hizo esto, se puede utilizar una condición ternaria como:

$logged_in = (include('userlogin.php') == TRUE) ? TRUE : FALSE;

Y a continuación, en cada función protegida tener algo como:

global $logged_in;

Usted todavía está pegado con una cláusula IF envolviendo la función entera, pero al menos tiene el estado de inicio de sesión. Si quería deshacerse del SI en el interior de la función, siempre se puede hacer llamando a la función condicional. Como:

$content = ($logged_in == TRUE) ? some_function() : redirect_User();

Por otra parte, acabo de empezar el aprendizaje de esta materia hace 2 meses y todavía no entienden las clases y objetos, para poder estar lejos de la base.

OT: Me gustaría pensar en cambiar el nombre del método para IsLoggedIn () si su finalidad descrita es el único. Un método llamado loginRequired () estaría mejor proteger el contenido confidencial.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top