2012-05-06 44 views
6

Tôi khá mới với PHP, vì vậy tôi nghi ngờ một sai lầm ngu ngốc. Tôi đã nhìn xung quanh cho một người có vấn đề tương tự, nhưng không thể tìm thấy bất kỳ vấn đề nào.Làm cách nào để ngăn chặn đầu ra HTML từ PHP hiển thị trong trình duyệt?

Vì vậy, tôi có tệp PHP có nghĩa vụ xuất ra một số HTML từ mẫu (qua Smarty). Thay vì thấy HTML được hiển thị trong Chrome, tôi thấy chính văn bản HTML. Dưới đây là đoạn code PHP Tôi đang sử dụng:

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

?> 

Tôi nghĩ rằng đó là một vấn đề với mã hóa, nhưng tôi chắc chắn rằng mọi thứ sử dụng UTF-8 (có nghĩa là, MYSQL, tiêu đề HTTP, và tệp mẫu). Còn gì nữa?

+0

Bạn có thể đổ các tiêu đề bạn đang nhận lại từ kịch bản? Có lẽ thông minh cũng đang đặt tiêu đề ở đâu đó đang xung đột – Garuda

+0

Bạn có thấy chỉ các thẻ HTML thực sự hay là mã PHP đang hiển thị, tức là. HTML được đính kèm trong các thẻ PHP. Câu hỏi ngu ngốc, nhưng là tập tin có tên * .php, và là php chạy trên máy chủ? – adeneo

+0

@Garuda Tôi làm như thế nào? – Hassan

Trả lời

2

Smarty hoặc get_article.php tập lệnh phải đặt tiêu đề loại nội dung cho bạn tại một số thời điểm. Hãy thử di chuyển dòng

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

Tất cả các con đường xuống ngay trên display chức năng để chắc chắn rằng nó sẽ ghi đè bất kỳ thay đổi được thực trước

+2

+1 câu trả lời hay ở đó! – adeneo

Các vấn đề liên quan