好的,我无法掌握这个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个内部服务器错误。为什么呢?
答案 0 :(得分:0)
不应该为包含eval()
的字符串调用PHP <?php ?>
,因为假设字符串本身的内容是纯PHP代码。所以除了使用@Boldewyn的建议外,你应该能够删除你正在进行的两个trim()
来电。