Acceso en función de usuario php

¿Es posible definir un control de acceso tipo httpacces pero a través de php 4 (sin utilizar phplib)? El objetivo es que todo lo que este por debajo de un determinado directorio protegido no sea accesible si no se ha introducido un usuario y contraseña.
1

1 respuesta

Respuesta
1
Hace tiempo, a partir de las clases PHPLIB, realicé una clase para disponer de control de accesos a una determinada página en función del usuario PHP. Esta clase podía realizar validaciones de usuario mediante base de datos o LDAP, además de utilizar sesiones PHP (mediante cookies de cliente y/o servidor) o vía URL, como hace PHPLIB.
La solución rápida para tu pregunta es almacenar los datos del usuario en variables de sesión y obtenerlos según haga falta en las páginas que necesiten autentificación. En dichas páginas, siempre tendrás que realizar la validación del usuario, mediante acceso a la base de datos o donde tengas almacenados los datos de los usuarios (login y password).
Lo ideal será, por lo tanto, crear una clase que realice todas las operaciones de control de usuarios: validación, autorización y gestión de las variables de sesión referidas al control de usuarios.
No sé si con esta explicación te habrá sido suficiente, si no es así, indícame dónde te puedo ayudar.
Un saludo,
iCesofT
O sea, ¿en cada página tendré que hacer una validación de usuario y contraseña? Esto no es muy efectivo de cara al rendimiento, ¿verdad? ¿No hay otra manera más efectiva de hacerlo?
Si realmente quieres seguridad, deberías realizar la validación cada vez que se lea una página que requiere autentificación.
Si lo que quieres es seguridad más 'blanda', lo que podrías hacer es añadir una variable a la clase que utilices para la autentificación que indique si el usuario está 'validado', con lo que, sólo sería necesario hacer una consulta a esa variable para comprobar que el usuario está validado y con esto no tendrías que hacer chequeos a la base de datos o LDAP o archivos planos cada vez que se ve una página. Creo que esta es una solución eficiente, siempre teniendo en cuenta posibles riesgos en la seguridad de la página.
Un saludo,
iCesofT
Bueno, teniendo en cuenta lo que dices, ¿hay alguna manera de pasar variables página a página sin tener que hacer "submits"? O Se pueden modificar las variables PHP_AUTH_USR o PHP_AUTH_PW?
Gracias
Se pueden pasar "variables" de una página PHP a otra sin hacer submits de varias formas:
1.- Mediante el método "get", es decir, redirigiendo la página a otra página PHP poniendo en la dirección URL las variables de la siguiente forma:
pagina2.php?variable1=valor1&variable2=valor2&..&variableN=valorN
Con esto recoges los valores de las variables como si se hubieran enviado mediante un formulario.
2.- Mediante la utilización de cookies.
3.- Mediante la utilización de variables de sesión.
La forma más segura es mediante la utilización de variables de sesión y si quieres, guardando como cookie el nombre de usuario únicamente. Y creo que, la mejor opción de todas, sería en lugar de pedir la autentificación mediante la simple ventanita del navegador, mediante una página web, donde podría estar el logo de la empresa,...
Un saludo,
iCesofT
¿A qué te refieres? Estoy mirando el manual de php y no se con que orden crear las variables de sesión. Quizas con sesion_register? Si quiero crear una variable login y otra password y meter valores, ¿cómo lo hago? Parece que con sesion_register solo puedo crear variables numéricas.
Efectivamente, para crear variables de sesión es con la función 'sesion_register()' y, para crear las variables $login y $password y almacenar valores en ellas, haciéndolas variables de sesión, puedes hacerlo de la siguiente forma:
<?php
session_register("login", "password");
if( ($login!="") && ($password!="")) {
/* eso es que ya estaba registrado */
} else {
/* Pedimos el nombre de usuario y contraseña, bien de PHP_AUTH_USR y PHP_AUTH_PW o, si lo hemos hecho a través de un formulario, de ese formulario. Una vez obtenidos los datos, los registramos de nuevo con session_register */
}
?>

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas