¿Cómo redirigir con la ubicación del encabezado en php cuando se usa ob_start?

<?php ob_start(); echo "

Hello " if ($condition) { header( "Location: http://www.google.com/" ); exit; } echo " World!

"; ob_end_flush(); ?>

Cuando $condition es verdadera, obtengo esto:

 Hello 

¡Lo que quiero es cuando $condition será verdadera y luego ir a Google!

No sé lo que está sucediendo, ¿puedes explicarme o darme una solución?

Gracias.

Simplemente agregue ob_end_clean(); antes de la llamada de encabezado

Todo debería funcionar, solo pon una ; después del eco ”

Hello

” y estarás bien …

Si yo fuera usted, habría comenzado lo que podría salir mal primero y luego procesaré.

Un ejemplo

 $exit_condition_1 = some_value1; $exit_condition_2 = some_value2; if($exit_condition_1 == false){ //Redirect //Exit } if(!$exit_condition_2){ //Redirect //Exit } //start the buffer ob_start() //show some HTML //flash the buffer ob_end_clean() there is no point of starting the buffer then if something goes wrong close it and redirect. Just do value testing at the begining then process the request. An example: lets say that you want to view a product's info and you have a function that will do that function view_product($product_id){ if(!$product = getProductById($product_id)){ //product does not exist, redirect } if(the user does not have enough access rights){ //show a message maybe //redirect } //everything is alright then show the product info }