Foros del Web » Programando para Internet » PHP »

Redireccionamiento

Estas en el tema de Redireccionamiento en el foro de PHP en Foros del Web. Tengo el siguiente código: Código PHP: //--Revisando que no falten datos a Insertar-- if ( $_POST [ "txtCodCarrera" ] ==  "" ) {       header ( "Location: RegCarreras.php?FaltaCod=*" );       exit(); } else {      if ( $_POST [ ...
  #1 (permalink)  
Antiguo 22/06/2004, 08:19
Avatar de RsOfT  
Fecha de Ingreso: marzo-2002
Ubicación: InterNET
Mensajes: 1.115
Antigüedad: 15 años, 9 meses
Puntos: 7
Redireccionamiento

Tengo el siguiente código:
Código PHP:
//--Revisando que no falten datos a Insertar--
if ($_POST["txtCodCarrera"] == "") {
     
header("Location: RegCarreras.php?FaltaCod=*"); 
     exit();
}
else {
     if (
$_POST["txtNombreCarrera"] == "") {
    
header("Location: RegCarreras.php?FaltaNom=*"); 
    exit();
     }    
}
//-------------------------------------------- 
Sucede que si le quito los exit(); el código sigue ejecutandose y me hacer un insert que tengo con datos en blanco... :-p
Por qué pasa eso?
__________________
.::RsOfT::.
--El que se aferra a lo conocido, nunca conocerá lo desconocido--
--Es intentando lo imposible como se realiza lo posible--
--Es de pésimo gusto contentarse con algo mediocre cuando lo excelente está a nuestro alcance--
  #2 (permalink)  
Antiguo 22/06/2004, 09:05
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Por qué las funciones header() le estas enviando cabeceras HTTP al "cliente" .. pero el flujo del script PHP continua hasta su final. Por eso, al usar tus "exit" detienes la ejecución de ese script en ese punto.

Lo "normal" es que si tu mandas una cabecera tipo "Location" (esto es própio del protocolo HTTP no de PHP ni de ASP ni de ningún otro lenguaje .. lo único es que con PHP "lanzas" esas cabeceras vía la función header() .. lo mismo que en ASP tiene sus response.nosecuantos ... o similar) le estás diciendo al "cliente": cambia la página que está viendo, pero .. PHP no entrega esas cabeceras al cliente hasta que no termine su ejecución completa del script en curso .. por eso .. pese que tu has lanzado esa cabecera .. todavía PHP no la envia por qué no terminó su ejecución. Con "exit" fuerzas a su fin y por ende a entregar esas cabeceras.

El "buffer" de salida de PHP se puede controlar con várias funciones .. Por si te interesa:
http://www.php.net/manual/en/ref.outcontrol.php


Un saludo,
  #3 (permalink)  
Antiguo 22/06/2004, 09:17
Avatar de RsOfT  
Fecha de Ingreso: marzo-2002
Ubicación: InterNET
Mensajes: 1.115
Antigüedad: 15 años, 9 meses
Puntos: 7
Muchas Gracias!!!
__________________
.::RsOfT::.
--El que se aferra a lo conocido, nunca conocerá lo desconocido--
--Es intentando lo imposible como se realiza lo posible--
--Es de pésimo gusto contentarse con algo mediocre cuando lo excelente está a nuestro alcance--
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 15:14.