PHP - 403 forbidden you don't have permission to access / on this server

 
Vista:

403 forbidden you don't have permission to access / on this server

Publicado por arpagofito (2 intervenciones) el 07/03/2016 22:31:30
Hola,
Os planteo un problema que me ha surgido, a ver si alguien puede ayudarme.

Me causa problema una redirección header("Location: glosario.php?dato=insertado"); mostrándo un error 403 "Forbidden. You don't have permission to access /…glosario.php on this server".

Ocurre en todos los archivos de la web que insertan datos (INSERT INTO). Ejecuta todo el código a la perfección (inserta los datos en la bbdd), pero al llegar a la redirección, se produce el error.
El resto de archivos de borrado o modificación de datos, no dan ningún problema.

El problema desaparece si elimino la variable del header, pero la necesito para poder mostrar un mensaje de "dato insertado".

¿Alguien sabe dónde puede estar el misterio?
Gracias de antemano.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

403 forbidden you don't have permission to access / on this server

Publicado por arpagofito (2 intervenciones) el 07/03/2016 23:22:03
He encontrado una solución, pero no le encuentro ninguna lógica. Y en programación me resulta muy extraño que algo pueda quedar al azar...

Si cambio el dato que envío en la variable, se resuelve el problema. Antes, enviaba estas variables a través de header location:
- portada=insertado
- noticias=insertado
- glosario=insertado

Ahora las he cambiado por:
- portada=pok
- noticias=nok
- glosario=gok

Sin embargo, ¿CUÁL ES LA RAZÓN DE QUE AHORA FUNCIONE? Me podréis decir que quizá tenga algo que ver el hecho de que el dato enviado en todas ellas era el mismo ("insertado"). Sin embargo, en todos los archivos de borrado envío el mismo dato también ("borrado") y no da ningún problema.

Por tanto, caso resuelto pero SIGO SIN SABER DÓNDE RADICABA EL PROBLEMA.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Felix
Val: 47
Ha disminuido su posición en 26 puestos en PHP (en relación al último mes)
Gráfica de PHP

403 forbidden you don't have permission to access / on this server

Publicado por Felix (32 intervenciones) el 08/03/2016 23:33:05
Es posible que el problema no esté en la variable que estabas enviando sino en la repetición de esa variable. Claro es muy incierto saber ya que no conocemos el código que hace la consulta y registro de datos por ejemplo.

Yo resolví creando una condicional que me llevaba a la pagina /exito.php si todo salia bien o a #error.php si algo andaba mal.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

403 forbidden you don't have permission to access / on this server

Publicado por arpagofito (5 intervenciones) el 10/03/2016 22:51:09
Sí, eso acabé pensando, que sería cuestión de la repetición. Pero es que me parece un motivo algo inconsistente.

El caso es que esto ocurre desde que he migrado a mysqli, así que, quizá tenga que ver con algún cambio introducido en la nueva versión. No conozco en profundidad todas las diferencias entre mysqli y mysql.

La opción que comentas (exito.php o error.php) me parece una buena alternativa cuando sólo necesitas mostrar uno o dos mensajes. En caso de tener varias páginas de inserción, modificación y borrado de datos, implicaría generar otros tantos archivos de éxito y error (uno por cada mensaje de cada página). Porque si queremos recibir todos los "éxitos" en el mismo archivo exito.php, volvemos al mismo punto: en envío de variables. Entiendo yo...

Pero muchas gracias por tu aportación.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Vainas
Val: 34
Ha aumentado su posición en 3 puestos en PHP (en relación al último mes)
Gráfica de PHP

403 forbidden you don't have permission to access / on this server

Publicado por Vainas (262 intervenciones) el 12/03/2016 11:34:51
Buenas:

Despues de darle vueltas un rato ya que es muy raro lo que te pasa he llegado a una conclusion. Tienes algun modulo de seguridad en apache o nginx que esta bloqueando la url.

Primero que nada un error 403 Suele ser permisos de carpeta o de archivo asi que deberias comprobar si el usuario que va a ejecutar el php tiene permisos sobre el mismo. De todas formas pienso que no debe ser esto ya que dices que cambiando el parametro ya no sucede asi que lo dejo como recordatorio simplemente.

Sobre un modulo de seguridad llegue a la conclusion por lo siguiente:

glosario.php?dato=insertado <== alguien ve que la palabra INSERT esta incluida dentro de la frase? Puede que algun modulo bloquee injection SQL. Para saber si es esto prueba a poner ANSERTADO o algo parecido a ver si funciona.

Segun leo en otros foros puedes mirar en apache ModSecurity o alguno parecido a ver si es esto lo que pasa. de todas formas yo no lo desactivaria.

Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

403 forbidden you don't have permission to access / on this server

Publicado por arpagofito (5 intervenciones) el 13/03/2016 22:15:58
Gracias Vainas,

La verdad es que también había valorado la posibilidad de que fuera un bloqueo de seguridad pero lo descarté porque antes de migrar a mysqli todo funcionaba perfectamente. El problema coincidió con la migración.

Después de muchas vueltas, sólo encuentro dos posibles explicaciones:
1. Que mysqli introduzca alguna modificación por la cual no admita valores de variable repetidos o, como tú dices, que contengan nombres de sentencias (INSERTado, DELETEado, etc)

o bien,

2. (Esta poco ortodoxa, lo sé). Que las variables hubieran sufrido algún tipo de "desgaste" (no sé muy bien cómo llamarlo). Es decir, por algún motivo, dejan de funcionar y sólo con cambiarlas se reanuda la función (como si se reseteara).

Gracias por tu respuesta.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar