Foros del Web » Programando para Internet » PHP »

Problemas con redireccionamiento

Estas en el tema de Problemas con redireccionamiento en el foro de PHP en Foros del Web. hola, estoy teniendo un problema con los redireccionamientos que no se me ocurre como resolver. a ver si me pueden ayudar. Lo que intento hacer ...
  #1 (permalink)  
Antiguo 14/01/2004, 11:38
Avatar de chr_c  
Fecha de Ingreso: junio-2003
Mensajes: 204
Antigüedad: 14 años, 6 meses
Puntos: 0
Problemas con redireccionamiento

hola, estoy teniendo un problema con los redireccionamientos que no se me ocurre como resolver.
a ver si me pueden ayudar.

Lo que intento hacer es validar el inicio de sesion con un unico formulario de login para todas las secciones.

EJ:

tengo en una seccion x un link a la pagina uno.php

si el usuario tiene la sesion iniciada puede ver la pagina uno.php sin problemas. (esto ya esta resuelto).

si el usuario no inicio sesion hago un header("location:login.php");

el tema es como hacer que una vez que se loguee vuelva a la pagina uno.php

probe con $HTTP_REFERER pero el problema es que al yo redireccionar con un header(location..., no obtengo la direccion url original, esta seria http://midominio/seccionx/uno.php

no se me ocurre como obtener este valor.

alguna idea....
  #2 (permalink)  
Antiguo 14/01/2004, 12:30
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Guardate en todas las páginas de tu sitio bajo una sesión (variable) el PHP_SELF .. es decir .. la variable de servidor que te indica nombre/ruta de ese script que se ejecutó.

Si tu usuario entra dircto a dos.php .. ahí inicias una sesión (como supongo que lo harás para determinar que no está autentificado tu usuario). Te guardas en una variable de session ese nombre/ruta de tu esa página .. redireccionas a tu login y en login redireccinas nuevamente (al autentificarse) a la variable de sesión que previamente guardastes.

dos.php (o cualquier página de tu sitio)
Código PHP:
<?
session_start
()
$_SESSION['mi_referer']=$_SERVER['PHP_SELF'];
// validas a tu usuario con tus rutinas actuales ..
// Si no es válido .. redireccionas como ya lo haces.
header ("Location: login.php");
exit;

?>
Y en tu login_proceso.php (en el script o parte donde determinas a donde redireccionar tras validar a tu usuario)

Código PHP:
<?
session_start
();

// etc .. procesos .. 


// Si está definida la variable de sesión 'mi_refere' .. es que entró tu usuario a una pagina directo (sin pasar por tu login).
// Si no está definida .. es que pasó por tu login .. así que ya puedes usar tu HTTP_REFERER.

if (isset($_SESSION['mi_referer'])){
  
$redir=$_SESSION['mi_referer'];
} else {
  
$redir=$_SERVER['HTTP_REFERER'];
}

// y redireccionas a donde corresponda ...
header ("Location: $redir");
exit;
Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.

Última edición por Cluster; 14/01/2004 a las 13:01
  #3 (permalink)  
Antiguo 14/01/2004, 16:32
 
Fecha de Ingreso: junio-2003
Ubicación: Barcelona
Mensajes: 22
Antigüedad: 14 años, 6 meses
Puntos: 0
no comprendo

Hola, estuve mirando este mensaje y al probar el redireccionamiento me da error de header:

Warning: Cannot add header information - headers already sent by (output started at e:\inetpub\wwwroot\web-php\sitio\Sitio.php:3) in e:\inetpub\wwwroot\web-php\htdocs\NuevoTema.php on line 53

Yo tengo entendido que las cabeceras deben ponerse al comienzo de la página sin espacios delante tansiquiera, por eso me extrañó lo que explicas en el mensaje anterior. Que estoy haciendo mal? gracias de antemano! saludos


www.alimanyes.tk
  #4 (permalink)  
Antiguo 15/01/2004, 07:39
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
En tu caso rubencarbo .. te está diciendo donde estás enviando esas cabeceras a tu navegador .. Como cabeceras se entiende .. desde saltos de línea antes o despues de un <? o ?> .. o HTML .. o simples espacios.

Si tu llamas a código bajo include() como así parece (fijate que el error dice que está en la pagina de nombre: NuevoTema.php .. pero el error de cabeceras marca en la Sitio.php) .. No puedes tener por ejemplo un salto de línea o un simple espacio al final de tu Sitio.php ?> ... en la linea 3 te avisa que ahí tienes algo .. revisalo.

Cita:
output started at e:\inetpub\wwwroot\web-php\sitio\Sitio.php:3)
Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
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 09:54.