2010-08-03 19 views
8

Tôi gặp sự cố với mô hình trong ứng dụng trình viết mã của mình. Tôi nhận được lỗi này khi gửi thông tin về tiêu đề. Về cơ bản, người viết mã đang phàn nàn về mô hình đăng ký của tôi gửi thông tin tiêu đề trước bất cứ điều gì khác. Làm thế nào là nó có thể? Tôi nghĩ rằng các mô hình chỉ dành cho các phương pháp truy vấn db và không có gì hơn. Ai đó có thể giải thích cho tôi điều đó không?Tại sao tôi nhận được "không thể sửa đổi tiêu đề thông tin tiêu đề đã được gửi bởi registration_model" lỗi trong codeigniter?

Đây là cách khởi đầu của một điều khiển trông giống như:

function User() 
{ 
    parent::Controller(); 
    $this->view_data['base_url'] = base_url(); 
    $this->load->model('User_registration_model');  // don't forget capital, it's important 
    $this->load->model('user_map_model');    // don't forget capital, it's important 
    $this->load->model('Tribe_model');     // don't forget capital, it's important 
    $this->load->library('email');      // Loading email library 
    $this->load->library('session');      // sets up the session 
    $this->load->library ('form_validation');   // Loading form validation library 
    $this->load->helper(array('form', 'url')); 
} 
+0

Trong đó tập tin bạn đang sử dụng các chức năng header, điều khiển hoặc xem? – Sarfraz

+0

Tôi đang có tất cả thông tin tiêu đề trong chế độ xem Sarfaz. Tôi nên nói rằng tôi cần phải viết lại file registration_model.php của mình vì tôi đã mất nó khi tôi cố tải nó lên máy chủ (tôi mất kết nối vào lúc đó) và không thực hiện bất kỳ bản sao lưu nào (tôi biết một người lập trình tội lỗi khủng khiếp) không bao giờ nên cam kết). Nhưng ít nhất tôi biết rằng có một cái gì đó sai trái với tập tin mô hình của tôi. – Pavel

+0

bạn đã kiểm tra khoảng trắng trước/sau thẻ php? – teemitzitrone

Trả lời

28

Lưu ý rằng tiêu đề phải được gửi trước bất cứ điều gì khác. Đảm bảo rằng không có mã/html hoặc thậm chí không gian/thụt đầu dòng trước chức năng tiêu đề và không có gì trước thẻ mở đầu tiên <?php cũng như thẻ kết thúc ?> trong chế độ xem của bạn.

+0

Cảm ơn Sarfraz vì gợi ý - Tôi đã đặt khoảng trống và nhận xét trước lớp điều khiển. Sau khi gỡ bỏ mọi thứ trở lại bình thường. – Pavel

+0

Yup, có dấu cách trước

+0

Một không gian trắng đơn giản vặn vẹo 30 phút của tôi, (cảm ơn cho tip @Sarfraz –

4

Thực ra một số nhà cung cấp máy chủ đang sử dụng PHP header(); để chuyển hướng trang web của chúng tôi, Vì vậy, trong loại máy chủ đó nếu chúng tôi sử dụng PHP header(), nó sẽ cung cấp lỗi. Tôi nghĩ vậy. Trong Mã số Igniter redirect(); đang sử dụng PHP header() để chuyển hướng URL của chúng tôi. Vì vậy, đó là lý do tại sao nó sẽ cung cấp cho lỗi này!

Vì vậy, giải pháp duy nhất là sử dụng JavaScript để giải quyết vấn đề này, tôi đang sử dụng nó! Nó hoạt động tốt.

//Your Code is for redirect 
redirect('site/function1'); 

//Alternate Code for solve this issue 
$url = 'site/function1'; 
echo' 
<script> 
window.location.href = "'.base_url().'index.php?/'.$url.'"; 
</script> 
'; 

Tôi không biết đây là giải pháp phù hợp cho vấn đề trên, Nhưng tôi đang sử dụng giải pháp này, hoạt động của nó 100%. Cám ơn bạn!

23

đặt ob_start này(); trên dòng đầu tiên của index.php dưới thư mục ứng dụng của bạn như thế này:

<?php 
ob_start(); 
/* 
*--------------------------------------------------------------- 
* APPLICATION ENVIRONMENT 
*--------------------------------------------------------------- 
+0

1 btw – asprin

+0

Điều này hoạt động ** NHƯNG TẠI SAO ?? **, ai đó có thể giải thích? – CodeGodie

+0

Theo câu trả lời @Sarfraz, ob_start(); sẽ bật bộ đệm đầu ra. hoạt động không có đầu ra được gửi từ kịch bản (khác với tiêu đề) – Gery

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