0

output_buffering が有効になっているホストを探していましたが、私のホスト ATM では有効になっていません。彼を捕まえることは不可能です...だから...私は解決策を見つけるか、新しいホストを取得する必要があります. 「正しい方法」があるかどうか、または output_buffering をオンにする必要がない方法があるかどうかを判断する前に、質問するかもしれないと思いました。

これは私が作成したスクリプトで、output_buffering なしでは機能しません。

<?php
session_start();
if (isset($_SESSION['authenticated'])) {
    if (isset($_GET['time']) && isset($_GET['user']) && isset($_GET['pass']) && isset($_GET['ip'])) {
        require("config.php");
        $currentTime = time();
        $time = mysql_real_escape_string($_GET['time']);
        $user = mysql_real_escape_string($_GET['user']);
        $pass = mysql_real_escape_string($_GET['pass']);
        $ip = mysql_real_escape_string($_GET['ip']);
        mysql_query("INSERT INTO `deleted` (timeDeleted, timeLogged, username, password, ip) VALUES('$currentTime','$time','$user','$pass','$ip')") or die(/*mysql_error() . */" Error code: 1");
        mysql_query("DELETE FROM `flagged` WHERE `timeLogged`='$time'") or die(/*mysql_error() . */"Error code: 2");
        mysql_close($con);
        include("flagged.php");
    }
} else {
    header("Location: index.php");
    exit;
}
?>

含まれないか、含まれる可能性がありますが、表示されないため失敗しますinclude("flagged.php");

だから私の質問は: output_buffering なしでこれを機能させるにはどうすればよいですか? そして、output_bufferingは悪い/悪い習慣ですか?

4

1 に答える 1

6

出力バッファリングは回避策です。アプリケーション フローを正しく構造化し、エンコーディングの問題とぶら下がっている空白に注意することで、これを回避できます。しかし、そのような問題の回避策として、それは非常に機能的です。そして、これをスクリプトの上に置くことで手動で有効にすることができます:

<?php
   ob_start();

あなたの場合の実際の問題は、UTF8 BOM である可能性があります。これは、テキスト ファイル (php スクリプトなど) の先頭にある非表示のマーカーです。それは の前に存在する<?phpため、ob_start()はもう役に立ちません。3 バイトを出力し、ヘッダーが送信されないようにします。その場合、ob_start は役に立ちません。

ただし、多くの場合、出力バッファリングも次の方法で有効にでき.htaccessます。

php_value output_buffering On
于 2011-04-01T23:19:37.513 に答える