如何防止PHP的HTML输出显示在浏览器中?

如何防止PHP的HTML输出显示在浏览器中?,php,html,smarty,Php,Html,Smarty,我对PHP很陌生,所以我怀疑这是一个愚蠢的错误。我到处找过有类似问题的人,但没有找到 所以我有一个PHP文件,它应该从模板(via)输出一些HTML。我看到的不是在Chrome中呈现的HTML,而是HTML文本本身。以下是我正在使用的PHP代码: <?php header("Content-type: text/html; charset=utf-8"); ob_start(); include_once '../api/get_article.php'; $a_json = ob_g

我对PHP很陌生,所以我怀疑这是一个愚蠢的错误。我到处找过有类似问题的人,但没有找到

所以我有一个PHP文件,它应该从模板(via)输出一些HTML。我看到的不是在Chrome中呈现的HTML,而是HTML文本本身。以下是我正在使用的PHP代码:

<?php

header("Content-type: text/html; charset=utf-8");

ob_start();
include_once '../api/get_article.php';
$a_json = ob_get_clean();
$data = json_decode($a_json, true);

require('./libs/Smarty.class.php');

$smarty = new Smarty();
$smarty->template_dir = './templates/';
$smarty->compile_dir = './templates_c';

$smarty->assign("title_text",$data['title']);

$smarty->display('content.tpl');

?>


我认为这是编码的问题,但我确保所有东西都使用UTF-8(即MYSQL、HTTP头和模板文件)。还可能是什么?

Smarty或
get_article.php
脚本必须在某个时候为您设置内容类型标题。试着移动这条线

header("Content-type: text/html; charset=utf-8");

一直向下到
display
函数的右上方,以确保它覆盖先前所做的任何更改

您可以转储从脚本返回的标题吗?也许smarty也在某个地方设置了冲突的标题。您是否只看到了实际的HTML标记,或者显示的是PHP代码,即HTML包含在PHP标记中。愚蠢的问题,但是文件名为*.php,并且php在服务器上运行吗?@adeneo php代码正在运行。我在浏览器中看到的是模板文件(content.tpl)的内容。在浏览器中查看源代码。检查它是否按预期输出HTML,或者您可能是无意中用HTML替换HTML。确实,首先检查浏览器页面的源代码,看看php是否在解释脚本,否则您可以下载firefox(插件)的LiveHTTPHeaders,并查看从服务器返回的头。