Foros del Web » Programando para Internet » PHP »

uso de Header()

Estas en el tema de uso de Header() en el foro de PHP en Foros del Web. Antes de HEADER() , puedo utilizar html?...
  #1 (permalink)  
Antiguo 27/04/2005, 09:33
Avatar de alexis77  
Fecha de Ingreso: diciembre-2003
Mensajes: 119
Antigüedad: 14 años
Puntos: 0
uso de Header()

Antes de HEADER(), puedo utilizar html?
  #2 (permalink)  
Antiguo 27/04/2005, 09:56
Avatar de sism82  
Fecha de Ingreso: octubre-2003
Ubicación: Guadalajara
Mensajes: 865
Antigüedad: 14 años, 1 mes
Puntos: 1
si por utilizar te refieres a enviar html al navegador la respuesta es NO. Sin embargo si usas funciones como ob_start() para cachear la salida, entonces es posible usar header().

Aqui la regla es, si ya enviaste alguna salida (texto, espacio en blanco, html etc) al navegador, ya los encabezados enviados con (header) no son válidos

saludos
  #3 (permalink)  
Antiguo 27/04/2005, 10:35
Avatar de isaacluz  
Fecha de Ingreso: marzo-2005
Mensajes: 180
Antigüedad: 12 años, 9 meses
Puntos: 0
A mi me parece qmás bien que ese Header que menciona es una función que (supongo) escribe la primer parte del codigo HTML resultante de un script.

Si este es el caso, si.. si podrias meter codigo HTML antes de Header(), pero quizá los resultados no sean los mejores.

Mejor busca en tus scripts la función Header()... y dentro de este metes el HTML que quieras
  #4 (permalink)  
Antiguo 27/04/2005, 10:44
Avatar de alexis77  
Fecha de Ingreso: diciembre-2003
Mensajes: 119
Antigüedad: 14 años
Puntos: 0
De acuerdo

claro es una funcion de php

la pregunta completa seria si puedo utilizar despues de html como se ve en el ejemplo.

Código PHP:
echo "<b>hola como estan</b>";

if(
$id){
    echo 
"sus datos fueron ingresados correctamnte";
}else{
     
header("Location: index.php?error=$error");

yo lei algo de eso y lo tenia el codo y todo pero no recuerdo donde lo tengo, pero al mismo tiempo lei que ya no se utilizaba esas funciones.

por eso pregunte para despejar dudas, de todas maneras gracias!!!!!!!!!!!!!!
  #5 (permalink)  
Antiguo 27/04/2005, 11:16
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
El caso es alexis77 .. que si te paras a pensar un momento .. no tiene sentido decir:
"muestro un dato o mensaje y si tal condicion se cumple .. redirecciono a otra página".

El enfoque es distinto .. Si tu condición se cumple (o no ) . .redireccionas . .en ese punto no tiene sentido y de hecho así te avisa PHP con un error sobre "cabeceras" si envias algo de salida antes de un "header()" .. Piensa que PHP "procesa" la página que ha de generar para su salida .. así que "antes" de que pueda llegar tu "HTML" a interpretarse a tu navegador (cliente) tu "lógica" en PHP tal vez ya ha decidido que no corresponde "mostrar" esa salida generada en ese script ..

Ejemplo práctico:

Código PHP:
<?
// la condición .. del ejemplo tendrás que repasarla . .en teoría estás detectando por ejemplo que tu variable $id .. si no tiene valor es que hay un error por eso redireccionas a otro sitio ..
 
if(empty($id)){ 
     
header("Location: index.php?error=$error"); 
     exit;

?>
<html>
<head>
</head>
<body>
<?
echo "<b>Hola .. tal ... </b>";
echo 
"sus datos fueron ingresados correctamnte";
?>
</body>
</html>

?>
No hace falta ni que se haga un "else" .. para el IF .. para eso se termina la ejecución del script en ese punto . .pues ya vía cabecera HTTP se está diciendo al cliente "oye, cambia la página por esta otra ...", el resto no corresponde en ese caso.

Si dices tal vez que tienes una estructura "modular" donde tienes algo tipo
Código PHP:
<html>
<head>
</head>
<body>
<?
switch($_GET['seccion']){
   case 
"seccion1":
     echo 
"blablabla";
   break;
   case 
"proceso1":
     
$a="valor";
    break;
}
</
body>
</
head>
En ese caso .. como ya veras . .si haces un "header()" ahí en alguno de los "case" vas a tener el problemas por qué ya estás enviado "HTML" al navegador antes de tu header() ..

Una solución para ese problema sería crear funciones de "cabeceras" y "pie" de pagina para llamarlas cuando realmente se requiera de "salida" ..

Código PHP:
<?
function cabecera(){
?>
<html>
<head>
</head>
<body>
<?
}

function 
pie(){
?>
</body>
</html>
<?
}


switch(
$_GET['seccion']){
   case 
"seccion1":
     
// aquí se origina salida .. así que es necesario "componer" la página HTML .. 
     
cabecera();
     echo 
"blablabla";
     
pie();
   break;

   case 
"proceso1":
     
// aquí en este caso no hay "salida" .. es un "proceso" que al terminar redireccionamos a otro sitio 
     
$a="valor";
     
header ("Location: nosedonde.php");
     exit;
    break;
}
?>
Para otros diseños más complejos .. lo mejor sería ya saltar a algún sistema de motor de "templates" (Smarty, Noktemplate .. pathTemplate .. etc).

Un saludo,
  #6 (permalink)  
Antiguo 27/04/2005, 14:56
Avatar de alexis77  
Fecha de Ingreso: diciembre-2003
Mensajes: 119
Antigüedad: 14 años
Puntos: 0
gracias por la ayuda...
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 23:39.