2012-05-06 7 views
6

Soy bastante nuevo en PHP, así que sospecho un error estúpido. Busqué a alguien con un problema similar, pero no pude encontrar ninguno.¿Cómo evito que la salida HTML de PHP aparezca en el navegador?

Así que tengo un archivo PHP que se supone que debe generar algo de HTML a partir de una plantilla (a través de Smarty). En lugar de ver el HTML renderizado en Chrome, veo el texto HTML en sí. Aquí está el código PHP que estoy usando:

<?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'); 

?> 

pensé que era un problema con la codificación, pero me aseguré de que todo utiliza UTF-8 (es decir, MySQL, la cabecera HTTP y la archivo de plantilla). ¿Qué más podría ser?

+0

¿Se puede volcar los encabezados que está recibiendo de vuelta de la secuencia de comandos? Quizás Smarty también está estableciendo encabezados en algún lugar que están en conflicto – Garuda

+0

¿Ve simplemente las etiquetas HTML reales, o es el código PHP que se muestra, es decir. el HTML está encerrado en etiquetas PHP. Pregunta estúpida, pero ¿el archivo se llama * .php y se está ejecutando php en el servidor? – adeneo

+0

@Garuda ¿Cómo puedo hacer eso? – Hassan

Respuesta

2

Smarty o la secuencia de comandos get_article.php debe establecer el encabezado de tipo de contenido para usted en algún momento. Trate de mover la línea

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

Todo el camino hasta justo encima de la función display para asegurarse de que anula los cambios realizados anteriormente

+2

+1 buena respuesta allí! – adeneo

Cuestiones relacionadas