Jose
2005-05-05 23:48:29 UTC
Supongamos que tengo en PHP un código que comprueba si la contraseña
y el nombre son los correctos. De ser así entra en la sección privada
pero si no es así quiero mostrar la página de error del servidor.
Ahora supongamos que los errores del servidor (pongamos Apache) están
personalizados para que queden acorde al resto de la imagen
corporativa de la empresa.
La primera solución que se me ocurre es hacer un
Header(Location:.....) para redirigir y cargar la página de error
(Error.php?error=nºerror). Con esta solución el resultado visual es el
esperado. El usuario que falla se le muestra la misma ventana de error
que se le mostraría por parte del Apache si intentara acceder a una
sección "no accesible". El punto negativo es que en los logs del
Apache aparece entonces una entrada donde se ve claramente esta
redirección.
El objetivo es conseguir que en los logs no aparezca. Es decir, como
cuando se produce un intento de acceso a una carpeta protegida y el
Apache genera, por ejemplo, un error 403. En este caso la página que
se le muestra al usuario es la personalizada para ese error (Apache
redirecciona de forma automática al encontrarse con este fallo) pero
en los logs no aparece en ningún momento que se le haya redireccionado
a lugar alguno. Simplemente una entrada con su petición y un 403 (en
este caso) indicando que no tuvo permiso.
¿Cómo puedo forzar con PHP para que el servidor web, en este caso
Apache, responda del mismo modo que en el que comento sin dejar rastro
extra en sus logs y mostrando la página de error personalizada que
tengo preparado para ese tipo de errores (prohibido)?.
La solución que me viene en mente es que cuando el usuario falle
hacer un header(location:...) a una zona "prohibida" intencionadamente
creada para hacer fallar al servidor y el automáticamente redirigiría
al error oportuno, pero de esta forma también tendría registrada la
redirección del header en sus logs y es lo que se pretende evitar.
Gracias por vuestra ayuda
Un cordial saludo
--- Jose
y el nombre son los correctos. De ser así entra en la sección privada
pero si no es así quiero mostrar la página de error del servidor.
Ahora supongamos que los errores del servidor (pongamos Apache) están
personalizados para que queden acorde al resto de la imagen
corporativa de la empresa.
La primera solución que se me ocurre es hacer un
Header(Location:.....) para redirigir y cargar la página de error
(Error.php?error=nºerror). Con esta solución el resultado visual es el
esperado. El usuario que falla se le muestra la misma ventana de error
que se le mostraría por parte del Apache si intentara acceder a una
sección "no accesible". El punto negativo es que en los logs del
Apache aparece entonces una entrada donde se ve claramente esta
redirección.
El objetivo es conseguir que en los logs no aparezca. Es decir, como
cuando se produce un intento de acceso a una carpeta protegida y el
Apache genera, por ejemplo, un error 403. En este caso la página que
se le muestra al usuario es la personalizada para ese error (Apache
redirecciona de forma automática al encontrarse con este fallo) pero
en los logs no aparece en ningún momento que se le haya redireccionado
a lugar alguno. Simplemente una entrada con su petición y un 403 (en
este caso) indicando que no tuvo permiso.
¿Cómo puedo forzar con PHP para que el servidor web, en este caso
Apache, responda del mismo modo que en el que comento sin dejar rastro
extra en sus logs y mostrando la página de error personalizada que
tengo preparado para ese tipo de errores (prohibido)?.
La solución que me viene en mente es que cuando el usuario falle
hacer un header(location:...) a una zona "prohibida" intencionadamente
creada para hacer fallar al servidor y el automáticamente redirigiría
al error oportuno, pero de esta forma también tendría registrada la
redirección del header en sus logs y es lo que se pretende evitar.
Gracias por vuestra ayuda
Un cordial saludo
--- Jose