0

PHPで特定の条件が満たされた場合、その上の何か(ヘッダー)を実行する必要があります。私はすべてを読みましob_startたが、それを何度も(つまり数日)テストしてみたところ、正直なところ違いはわかりません。では、ヘッダーを上部に残して後でアクティブ化できるかどうか疑問に思っていますか?

if($x == 1)
    header("Location: something"); exit;

... // echo's, HTML, etc
$x = 1;
restart_php();

おそらくそうではありませんが、試してみる価値はあります。多分そこに誰かがテクニックを知っています。

4

2 に答える 2

1

後で本当にヘッダーを指定して(そしてそれは可変である)、ある種のベイルアウトリダイレクトを提供したい場合...サイズについてはこれを試してください。

<?php
function restart_php($x){
    if($x == 1)  
        ob_end_clean();   # throw everything away
        header("Location: something"); 
        exit;  
    }else{
        $page = ob_get_contents();
        ob_end_clean();
        echo $page;
    }
}
ob_start();  # everything after here goes into buffer so header is clean

... // echo's, HTML, etc  
$x = 1;  # to previous note on this, X is always equal to 1?
restart_php($x);  # which clears the buffer and either shows header or echo's the contents
?> 
于 2012-09-13T13:35:11.723 に答える
0

わからない、私があなたの質問を正しく理解しているなら.... phpでは(実際には)GO TOを使用する方法はありません(基本的なように)...。

更新:php 5.3.0以降、goto関数が実装されています

あなたができること例えば。関数の上部に条件を記述します

<?php
 function shutdown() {
   global $x;
   if($x==1) {
      header("location ...");
   } 
   //.....
 }
 // and then call the register_shutdown_function
 register_shutdown_function('shutdown');
 ?>

この関数に関する詳細 register_shutdown_function()

于 2012-09-13T13:19:01.100 に答える