Tema: por ke?
Ver Mensaje Individual
  #4 (permalink)  
Antiguo 08/04/2003, 15:56
Cluster
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
En teória .. usando una sentencia tipo

Código PHP:
if (...)
// redirecionas ..
} else {
//redireccionas a otro sitio ..

y justo al final del script .. no tiene ningun efecto usar exit; .. pero si por ejemplo hicieras algo tipo:

Código PHP:
if (alguna variable no se cumple condicion){
// redireccionas
}

// resto de tu código ... 
Ese "resto de tu código" se va a ejecutar si no haces un exit; despues de tu código que uses para redireccionar (sea Javascritp/META o header() ...) .. Dependiendo de la lógica que tenga .. pasará al final del script o hará otras cosas ..

Por eso te decía . que si nosotros hacemos en el la mayoría de casos una redirección, es porqué queremos abandonar en ese punto de nuestro script la ejecución del mismo .. Con esas sentencias (sea javascript/META o header()) ..lo único que hace PHP es decirle al navegador (al cliente): "cambia la página a tal otra página que yo sigo mi proceso en el servidor .."

Usando Javascript o META tag (de refresco) si te fijas .. Por un instante en el navegador tienes una página con el código javascirp que estas poniendo (depende como cargue tus páginas lo veras mas claro o no te daras cuenta del cambio ..)

Usando funciones de redireccionamiento via cabeceras HTTP:
Código PHP:
header("location: pagina.php");
exit; 
// Y el exit para que termine la ejecución el script.php 
Le envias una cabera al navegador .. la misma que via javascript pero "digamos" antes de que se interprete el HTML/javascript en el navegador .. por lo tanto NO ves nada en el navegador y el "cambio" de página es mas rápido ..

Esto tiene un problema . Si usas HTML antes de esa instrucción header() te va a dar problemas con las "cabeceras enviadas en tal línea .. " .. Esto se soluciona de varias formas .. la mejor es comprendiendo donde se ejecuta PHP y donde HTML/javascript para que reordenes tu código PHP/HTML .. Otra opción pasa por gestionar el buffer de salida de PHP con funciones como ob_start() y afines .. pero no es la idea esa .. la idea es ordenar tu código sabiendo que PHP se ejecuta en el servidor y dependiendo de tu lógica vas a componer cierto HTML para entregarlo al navegador ..(cliente)..

Se me olvidó .. por cierto, Usando Header() .. cuando haces mención a la página q vas a redirecionar via location: pagina.tal .. puedes usar construcciónes de link como lo haces via javascript .. estas generando un "link" q va a entrarle a la pagina que redirccionas las variables por metodo GET ..

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; 08/04/2003 a las 15:59