2
<?php

ob_start();

echo "<body><p>Hello "

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

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

?>

$condition真の場合、私はこれを取得します:

<body>Hello

私が欲しいのは、いつ$condition本当になるかということです。それからGoogleに行きます!!!

何が起こっているのかわかりません。説明または解決策を教えてください!?

ありがとう。

4

4 に答える 4

2

すべてが機能するはずです。;アフターエコー" <body><p>Hello"を入力するだけで、問題ありません。

于 2012-08-06T09:14:14.200 に答える
2

ob_end_clean();ヘッダー呼び出しの前に追加するだけです。

于 2012-08-06T05:58:19.590 に答える
1

私があなただったら、最初にうまくいかない可能性のあるものを開始してから、処理を行います。

$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

}
于 2012-08-06T06:02:24.357 に答える