Ver Mensaje Individual
  #2 (permalink)  
Antiguo 28/08/2003, 16:57
pacoalonso79
 
Fecha de Ingreso: agosto-2003
Ubicación: Piura
Mensajes: 238
Antigüedad: 20 años, 9 meses
Puntos: 0
Hola:
imagino que te sale un warning que te impide la redirección... aqui te paso una una completa explicación que hace poco tuvo a bien el maestro Cluster de darme... ahi te va y de hecho que te servirá... el tema en donde me lo explicó se llama "problema con headers":

Cita:
Los frames no tiene nada que ver .. un frame (de HTML teoría) se comporta como una página própia con sus cabeceras propias y resto de tu código ..

Osease,si vas a usar header() .. lo que importa es que NO exista nada de HTML antes de llamar a dicha función .. Entiendase como HTML a un simple espacio .. o salto de líena antes o despues del primer <? o último ?> que hagas en esos codigo_x.php

En la estructura que planteas (el código que pusistes) .. Deberías de tener tu formulario de selección (tu HTML) como la opcion del CASE "default" ...incluido ahí tus cabeceras HTML <html><head> .. que puedas necesitar y tus </html> .. Osease, Cada "CASE" sería una página HTML completa .. Para ello te puedes ayudar de funciones como:

Código PHP:
function cabeceraHTML(){
echo <<<HTML
<html>
<head>
<title>blabla</title>
</head>
<body>
HTML;

Y alguna de "pie" donde cierres los <tag> HTML abiertos .. Esas funciones las llamaras cuando tengas que mostrar los datos realmente ..

Ejemplo

Caso MAL estructurado:

Código PHP:
<html>
<head>
<title>blabla</title>
</head>
</body>
<?
switch($rad){
case 
0:
    echo 
"algo .. esto ya es HTML o cabecera enviada al navegador";
break;
case 
1:
   
// aquí un proceso PHP integro ..
  
if ($variable=="nose"){
    
header("location: nosedonde.php");
    exit;
  }
break;
}
?>
</body>
</html>
En el ejemplo .. no todos los CASE (casos) dan una salída HTML (sólo el primero) .. así que el 2º caso nos fallará el header() con el mensajito que ya hemos enviado HTML al navegador (cabeceras) ..

Ahora .. "Pensemos" como trabaja PHP (siempre pre-procesa en el servidor .. lo que genere es lo que entrega al cliente (navegador en estos casos ..) .. Bien .. usando las funciones de "cabecera()" y "pie()" que podamos tener .. se hace muyy sencillo hacer "opciones" (CASE) que tengan o no tengan salida realmente HTML ...

Código PHP:
<?
function cabeceraHTML(){
echo <<<HTML
<html>
<head>
<title>blabla</title>
</head>
<body>
HTML;
}

function 
pieHTML() {
echo <<<HTML
</body>
</html>
HTML;
}

switch(
$rad){
case 
0:
    
cabeceraHTML(); // componemos la pagina HTML .. cabecera
    
echo "algo .. esto ya es HTML o cabecera enviada al navegador"// nuestro contenido ..
    
pieHTML(); // el pie de página .. 
break;
case 
1:
   
// aquí un proceso PHP integro .. NO llamamos a las funciones de cabeceraHTML ni pieHTML pues
  // este proceso se hace integro en PHP .. sólo sále al navegador con el header().
  
if ($variable=="nose"){
    
header("location: nosedonde.php");
    exit;
  }
break;
}
?>
Un gran saludo y éxitos en tus proyectos...
Paco
__________________
Un hombre inteligente, caminando, llega mucho mas rápido que un torpe en coche

Última edición por pacoalonso79; 28/08/2003 a las 16:59