0

好的,我无法掌握这个 ob_start 和 ob_end_clean 代码......

基本上,我试图在页面部分中输出 PHP 代码。

这是我的源代码:

$content = trim(html_entity_decode($context['page_data']['body'], ENT_QUOTES, $context['character_set']));
$content = trim($content, '<?php');
$content = trim($content, '?>');

function dream_error_handler($output)
{
    $error = error_get_last();
    $output = "";
    if (!empty($error))
        foreach ($error as $info => $string)
            if ($info == 'message')
                $output .= $string;

    return $output;
}

ob_start('dream_error_handler');
eval($content);
$code = ob_get_contents();
ob_end_clean();

$context['page_data']['body'] = $code;

现在,在模板函数中,我使用这个:

global $context;

echo '
                <div class="cat_bar">
                    <h3 class="catbg">
                        ', $context['page_data']['title'], '
                    </h3>
                </div>
                <span class="upperframe"><span></span></span>
                    <div class="roundframe">
                        ', $context['page_data']['body'], '
                    </div>
                <span class="lowerframe"><span><!-- // --></span></span>
            ';

那么为什么我会收到此错误消息?

HTTP 错误 500(内部服务器错误):服务器尝试完成请求时遇到了意外情况。

我在这里做错了什么?$context['page_data']['body'] 有有效的 PHP 代码,很简单,echo 'Hello World';但它给了我这个 500 Internal Server Error。为什么?

4

1 回答 1

0

eval()不应为包含的字符串调用PHP <?php ?>,因为假定字符串本身的内容是纯 PHP 代码。trim()因此,除了使用@Boldewyn 的建议之外,您还应该能够删除您正在拨打的两个电话。

于 2011-07-05T09:25:36.697 回答