Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] PHP OO header location no redirige como quiero

Estas en el tema de header location no redirige como quiero en el foro de PHP en Foros del Web. Tengo un problema con header location al trabajar con servidor local. Donde he detectado el problema tengo el código siguiente. Sirve para que un usuario ...
  #1 (permalink)  
Antiguo 16/07/2014, 04:47
Avatar de guardarmicorreo  
Fecha de Ingreso: noviembre-2012
Ubicación: Córdoba
Mensajes: 1.153
Antigüedad: 11 años, 5 meses
Puntos: 84
header location no redirige como quiero

Tengo un problema con header location al trabajar con servidor local.

Donde he detectado el problema tengo el código siguiente. Sirve para que un usuario realice login

Código PHP:
Ver original
  1. <?php
  2. namespace modules;
  3. use controller, models;
  4. class Login{
  5.    
  6.     public function view(){
  7.         return (new controller\Template())->view('login', 'login');
  8.     }
  9.    
  10.     public function login(){
  11.         $values=array(':user'=>\filter_input(INPUT_POST, 'login_user'),
  12.             ':password'=>  \filter_input(\INPUT_POST, 'login_password'));
  13.        
  14.         if((new \models\LoginDb())->login($values)!==FALSE){
  15.             $_SESSION['user']=$values[':user'];
  16.             $location="home/";
  17.        
  18.         }else{$location="login/";} //header('Location:'.ROOT_PATH.'/login');
  19.        
  20.         header ('Location:'.\LOCATION_PATH.$location);
  21.     }
  22. }

LOCATION_PATH tiene el siguiente valor

Código PHP:
Ver original
  1. \define ('LOCATION_PATH', '/localhost/framework/');

Introduzco un usuario y password que existen en la BD, por lo tanto los datos son enviados a login/login/, ahí los datos son comprobados y como existen, la variable $location="home/".

Entonces el header location realiza lo siguiente

Código PHP:
Ver original
  1. header ('Location:/localhost/framework/home/');

El problema está en que el header location no redirige como espero, ya que hace esto otro en la barra de navegación

(quito el http:// para que se pueda ver la dirección completa)
Cita:
localhost/framework/login/login/home/home/home/home/home/home/home/home/home/home/home/home/home/home/home/home/home/home/home/home/
apareciendo este otro mensaje de error

Cita:
La página no está redirigiendo adecuadamente

Firefox ha detectado que el servidor está redirigiendo la solicitud a esta dirección de una manera en la que nunca terminará.

Este problema a veces está causado por desactivar o rechazar la recepción de cookies.
Pero no estoy utilizando cookies, porque no las he implementado en el sistema.

Así que el foco del problema está en que no me saca de la URL /localhost/framework/login/login/ sino que me mantiene ahí, sumando el LOCATION_PATH + $location a la URL actual.

Por más que lo pienso, no tiene sentido lo que hace, sé que estoy equivocándome en algo y no sé qué es :S

¿Alguien puede ayudarme?

Un saludo.
__________________
Ayúdame a hacerlo por mi mismo.
  #2 (permalink)  
Antiguo 16/07/2014, 08:08
Avatar de hhs
hhs
Colaborador
 
Fecha de Ingreso: junio-2013
Ubicación: México
Mensajes: 2.995
Antigüedad: 10 años, 9 meses
Puntos: 379
Respuesta: header location no redirige como quiero

Ya probaste de esta forma ?
Código PHP:
Ver original
  1. \define ('LOCATION_PATH', 'http://localhost/framework/');
__________________
Saludos
About me
Laraveles
A class should have only one reason to change.
  #3 (permalink)  
Antiguo 16/07/2014, 08:12
Avatar de guardarmicorreo  
Fecha de Ingreso: noviembre-2012
Ubicación: Córdoba
Mensajes: 1.153
Antigüedad: 11 años, 5 meses
Puntos: 84
Respuesta: header location no redirige como quiero

Gracias hhs. Acabo de probarlo, pero sigue dando el mismo problema.
__________________
Ayúdame a hacerlo por mi mismo.
  #4 (permalink)  
Antiguo 16/07/2014, 08:21
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: header location no redirige como quiero

Más allá de que la redirección puede fallar no debería hacerse un loop, que justamente eso está sucediendo, y eso significa que no hay la suficiente lógica de control para evitar estos loops.

Con sólo leer el código no me imagino dónde pueda estár el loop, pero el hecho está en que muestra muchas veces seguidas "/home/home/...". es porque la redirección nunca es hacia una URL absoluta y desde ahí comienza el problema.

Te sugiero depurar todos tus request y header() antes de ejecutarlos, de otra forma no se sabe exactamente lo que hace aunque muestres algunos datos.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #5 (permalink)  
Antiguo 16/07/2014, 08:39
Avatar de hhs
hhs
Colaborador
 
Fecha de Ingreso: junio-2013
Ubicación: México
Mensajes: 2.995
Antigüedad: 10 años, 9 meses
Puntos: 379
Respuesta: header location no redirige como quiero

No creo que el problema este en la clase Login.
guardamicorreo vas a tener que hacer debug del FrontController para ver el comportamiento del request. Si puedes instala xdebug para eso.
__________________
Saludos
About me
Laraveles
A class should have only one reason to change.
  #6 (permalink)  
Antiguo 16/07/2014, 10:21
Avatar de guardarmicorreo  
Fecha de Ingreso: noviembre-2012
Ubicación: Córdoba
Mensajes: 1.153
Antigüedad: 11 años, 5 meses
Puntos: 84
Respuesta: header location no redirige como quiero

Voy a instalar xdebug a ver si atrapo el error.

En servidor remoto "solucioné" el problema poniendo como valor de la constante LOCATION_PATH la propia url de la web

Código PHP:
Ver original
  1. \define ('LOCATION_PATH', 'http://www.miweb.com/');

Pero ahora en local ha vuelto el problema.
__________________
Ayúdame a hacerlo por mi mismo.
  #7 (permalink)  
Antiguo 16/07/2014, 11:00
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: header location no redirige como quiero

Cita:
Iniciado por guardarmicorreo Ver Mensaje
[...] Pero ahora en local ha vuelto el problema.
¿Y en local cual es el código real?

¿Es así?

Código PHP:
Ver original
  1. \define ('LOCATION_PATH', 'http://localhost/');

Si eso es correcto no deberías tener problemas, pues para eso debes colocar la URL real con todo y protocolo.

Si por alguna razón usaste un valor diferente puede que ahí radique el problema.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #8 (permalink)  
Antiguo 16/07/2014, 11:44
Avatar de guardarmicorreo  
Fecha de Ingreso: noviembre-2012
Ubicación: Córdoba
Mensajes: 1.153
Antigüedad: 11 años, 5 meses
Puntos: 84
Respuesta: header location no redirige como quiero

oh my god... siempre tengo error en las cosas más tontas.

Resulta que cuando he realizado las sugerencias de hhs no había vuelto a poner LOCATION_PATH en el header location de la clase login, por eso me redirigía mal.

Os pido disculpas.

¿Algún consejo para mejorar tener un sistema totalmente portable y que, como mucho, haya que cambiar el .htaccess para las redirecciones al index.php?

Pateketrueke, creeme que mi último interés es engañar a quien intenta ayudarme xD

Era lo que me faltaba, no respetar a quien me ayuda hombre! :D un saludo!
__________________
Ayúdame a hacerlo por mi mismo.

Etiquetas: header, location, quiero, variable
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 00:40.