How to redirect with header location in php when using ob_start?

后端 未结 4 960
北恋
北恋 2021-01-23 06:17

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

<
相关标签:
4条回答
  • 2021-01-23 06:39

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

    0 讨论(0)
  • 2021-01-23 06:44

    Just add ob_end_clean(); before the header call.

    0 讨论(0)
  • 2021-01-23 06:47

    To resolve a similar situation where a function was using ob_start() and there was header("Location: http://www.example.com"); after that but erring "already sent...", I replaced the header(... call with

    echo "<script> window.location.href = 'https://www.example.com' </script>"
    

    and it worked in that particular case (all that was needed was a just page redirect anyway).

    0 讨论(0)
  • 2021-01-23 06:49

    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
    
    }
    
    0 讨论(0)
提交回复
热议问题