Как перенаправить с расположением заголовка в php при использовании ob_start?

<?php ob_start(); echo "<body><p>Hello " if ($condition) { header( "Location: http://www.google.com/" ); exit; } echo " World!</p></body>"; ob_end_flush(); ?> 

Когда $condition true, я получаю следующее:

 <body>Hello 

То, что я хочу, это когда $condition будет истинным, тогда перейдите в Google!

Я не знаю, что происходит, вы можете объяснить или дать мне решение !?

Благодарю.

Просто добавьте ob_end_clean(); перед вызовом заголовка.

Все должно работать, просто положите ; после эха " <body><p>Hello ", и все будет хорошо ..

Если бы я был вами, я бы начал то, что может пойти не так, а затем обработать.

Пример

 $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 }