How to redirect with header location in php when u

2019-02-25 17:32发布

问题:

<?php

ob_start();

echo "<body><p>Hello "

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

echo " World!</p></body>";
ob_end_flush();

?>

When $condition is true I get this:

<body>Hello

What I want is when $condition will be true then go to Google!!!

I don't know what is happening, can you explain or give me a solution!?

Thanks.

回答1:

Just add ob_end_clean(); before the header call.



回答2:

Everything should work, just put an ; after echo "<body><p>Hello" and you will be fine..



回答3:

If I were you, I would have started what might go wrong first then do the processing.

An example

$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

}