Foros del Web » Programando para Internet » PHP »

Problema de novatos: redireccionamiento

Estas en el tema de Problema de novatos: redireccionamiento en el foro de PHP en Foros del Web. Hola gente: Mi problema es que quiero hacer un redireccionamiento mediante un switch o por condiciones tipo 'if' y obviamente el header('location: URL"'): no sirve, ...
  #1 (permalink)  
Antiguo 11/01/2005, 09:17
 
Fecha de Ingreso: julio-2002
Ubicación: Capital Federal
Mensajes: 66
Antigüedad: 15 años, 5 meses
Puntos: 0
Pregunta Problema de novatos: redireccionamiento

Hola gente:
Mi problema es que quiero hacer un redireccionamiento mediante un switch o por condiciones tipo 'if' y obviamente el header('location: URL"'): no sirve, solo para uno a la vez.

Quisiera saber si existe alguna funcion Custom o built-in que sirva para eso.

o sino, algun tipo de redireccionamiento que sirva, aunque sea en HTML para salir con un echo
__________________
Adrián (@ RHCP I Wanna Be Funky Flea)

Última edición por Flea; 11/01/2005 a las 09:18
  #2 (permalink)  
Antiguo 11/01/2005, 09:30
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Cita:
Mi problema es que quiero hacer un redireccionamiento mediante un switch o por condiciones tipo 'if' y obviamente el header('location: URL"'): no sirve, solo para uno a la vez.
No entendí .. por qué dices eso? ..

Código PHP:
switch($variable){
   case 
"nose":
     
header ("Location: nose.php");
     exit;
   break;

   case 
"blabla":
       
header ("Location: blabla.html");
       exit;
   break;

Ahora .. claro que ese shitch va a redirecionar en función de la condición que se cumpla .. ¿o que es lo que realmente quieres hacer?

Un saludo,
  #3 (permalink)  
Antiguo 11/01/2005, 15:13
 
Fecha de Ingreso: julio-2002
Ubicación: Capital Federal
Mensajes: 66
Antigüedad: 15 años, 5 meses
Puntos: 0
Exclamación

Si, es parecido a lo que yo hacía aunque en vez del exit; (había probado con un exit; en un if() pero no me había funcionado), lo probé con un die; la verdad es que no se cual es la diferencia entre el exit; y el die; (yo se que exit; corta la lectura del script, y exit; también).

La pregunta es: ¿te funcionó a vos ese tipo de sentencia que me das? no puedo usarlo con un if()?

El error que me tira PHP es que dice que el header ya está cargado y no se puede repetir (saqué todo el html que exista en el resto del script).

Saludos y espero que me puedas ayudar.
__________________
Adrián (@ RHCP I Wanna Be Funky Flea)
  #4 (permalink)  
Antiguo 11/01/2005, 15:25
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
(si, ese tipo de estructuras las uso amenudo sin problemas).

Bueno .. si pones tu código concreto que usas y el error exacto se podrá ver donde tienes el problema...

El hecho es que debes usar un exit; tras un header() de tipo "Location" .. pues la idea es que el script corte su ejecución en ese punto para que sea entregada esa cabeceera HTTP al navegador (cliente) y ejecute el redireccionamiento "cambiando" a otro script .. sino, PHP continua la ejecución de tu script y .. dependiendo de la lógica y el algoritmo de ese script en concreto podría ocasionarte problemas por ejecutarse código que ya no correspondería ejecutar en ese punto.

Un saludo,
  #5 (permalink)  
Antiguo 11/01/2005, 15:44
Avatar de Kernellover  
Fecha de Ingreso: noviembre-2002
Ubicación: Perdido
Mensajes: 251
Antigüedad: 15 años
Puntos: 0
Cita:
Iniciado por Flea
... (yo se que exit; corta la lectura del script, y exit; también)...
Ya se que nadie es perfecto pero es que cuando lo he leido me ha dado la risa tonta y ... en fin.

Quería comentar que tienes que asegurarte de que no hay ninguna salida tipo echo antes de hacer modificaciones en el header, si no te dará error.

Suerte!
  #6 (permalink)  
Antiguo 11/01/2005, 15:55
Avatar de Kernellover  
Fecha de Ingreso: noviembre-2002
Ubicación: Perdido
Mensajes: 251
Antigüedad: 15 años
Puntos: 0
Porsupuesto puedes usar varios if en lugar del switch,aunque si puedes usar el switch, usalo, el código se ve mas estructurado en mi opinión, sobretodo si en cada if usas como pregunta la misma variable.

Código:
 if($variable=="nivel 1"){ 
 header ("Location: niv1.php"); 
	 exit; 
}else if($variable=="nivel 2"){ 
 header ("Location: niv2.php"); 
	 exit;
}else if($variable==" nivel 3"){ 
 header ("Location: niv3.php"); 
	 exit;
}
}else
 header ("Location: vuelve.php"); 
	 exit;
}
 
Salut.


Por cierto lo que comentas del error del header es lo que te decia en el otro post.

Lo primero que envia al cargar una página es la cabecera o header, si has enviado datos al navegador por medio de echo ya no puedes redirigir al cliente hacia otra pagina a no ser que uses otras técnicas como sería la combinación de scripts de javascript imprimidos desde php... en fin, espero haberte servido de ayuda.

Suerte!
  #7 (permalink)  
Antiguo 12/01/2005, 06:59
 
Fecha de Ingreso: julio-2002
Ubicación: Capital Federal
Mensajes: 66
Antigüedad: 15 años, 5 meses
Puntos: 0
Disculpen mi inocencia al preguntar, pero yo sabía algunas de las cosas que ustedes me dijeron, igual, la cosa me seguía tirando error en el header. Recién, hace un par de meses, que estoy a full con PHP (soy del palo del C#.NET).

Mi problema fué el siguiente

Estaba haciendo un include de una clase (arriba de los headers) y, de salame que soy, le dejé el print_r($_COOKIE) para debugear en lo que estaba laburando (dentro de la clase, por eso no lo veía). Eso me devuelve HTML y por eso no me funcionaban los headers.

Osea:

Código PHP:
include "mi_clase.clase"/*Acá dentro estaba el print_r($_COOKIE);
abajo seguía algo como esto: p.e.*/
$a = new fuckingRegistro;
If (
$a->registro("nombre""word"true)) {
    
header ("location: sitio/index.php");
 exit;
} else {
    
header("location: noEntras.html");
 exit;

Por eso no encontraba el error.
Gracias por todo, capos, me queda un último pedido, en el manual no explica muy bien todo lo que se puede hacer con el header (p.e.: WWW-Authenticate: o HTTP/1.0 401 Unauthorized, etc.). Conocen algún sitio-tutorial que si tenga?.

Kernellover: lo que quise decir es que "yo se que exit; corta la lectura del script, y el die; también" (no te preocupes, cuando leí lo que puse, gracias a vos, tambíen me garqué de la risa un buen rato). Ahora, cuál es la diferencia?

Ah! Y también aprendí (la parte buena de comenter errores) que con el meta tag REFRESH podés hacer lo mismo (si tenés algo que escupa HTML arriba como la gilada que a mi me pasó).

EJEMPLO:

Código PHP:
echo '<meta http-equiv="refresh" content="0;URL=index.php">'
Saludos!!
__________________
Adrián (@ RHCP I Wanna Be Funky Flea)
  #8 (permalink)  
Antiguo 12/01/2005, 15:31
Avatar de Kernellover  
Fecha de Ingreso: noviembre-2002
Ubicación: Perdido
Mensajes: 251
Antigüedad: 15 años
Puntos: 0
Yo también lo entendí a la primera lo que querías decir con esa frase pero no pude evitar la risa, no es nada malo, a veces a mi tmb me pasa

Exit, hace lo mismo que die, con la única diferencia de que die admite un argumento tipo cadena string para imprimir cuando se cumple.

Código:
... or die("no tienes acceso")

Por cierto en la web de www.php.net hay una ayuda que me va muy bien, si quieres informacion sobre posibles utilidades y demás del header visita este link.
http://es2.php.net/manual/es/function.header.php

Suerte!
  #9 (permalink)  
Antiguo 13/01/2005, 07:04
 
Fecha de Ingreso: julio-2002
Ubicación: Capital Federal
Mensajes: 66
Antigüedad: 15 años, 5 meses
Puntos: 0
Gracias!!!! me sirvió de mucho lo del die; ahora entro a php.net para revisar eso.
__________________
Adrián (@ RHCP I Wanna Be Funky Flea)
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 17:15.