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 脚本)。它生活在 the 之前<?php,因此ob_start()无法再提供帮助。它输出 3 个字节并且会阻止标头被发送。如果是这种情况,那么 ob_start 将无济于事。

但是输出缓冲通常也可以通过以下方式启用.htaccess

php_value output_buffering On
于 2011-04-01T23:19:37.513 回答