PDA

View Full Version : Lỗi PHP "Cannot modify header information"



UNGDIX
04-12-2006, 23:56
Mình thiết kế web chạy localhost ngon lành nhưng khi up lên host thì bị lỗi này:

Warning: Cannot modify header information - headers already sent by (output started at ***************xx/html/project/admin/login_action.php:17) in ************x/html/project/admin/login_action.php on line 21

Ai biết cách khắc phục chỉ mình với.

http://phamtrungdung.com/loi2.jpg

chaobuoisang
06-12-2006, 22:06
thêm ob_start(); ở đầu tiên thử coi, nếu không được là do code bị lôi unicode

dracubin
06-12-2006, 22:32
Theo nguyên tắc, các thông tin của header phải được chuyển đi đầu tiên. Do vậy phần gây lỗi là ở dòng 17: [echo "Code invalid";]. Bạn bỏ dòng này đi là được.

chaobuoisang
06-12-2006, 22:34
Còn mình lại nghĩ bỏ cài dòng header( lại được đó, :D

kid08
07-12-2006, 11:45
thêm ob_start() thì trc mỗi hàm header phải dùng ob_end_clean() là sẽ đc :D, echo thoải mái :P

duyanhnguyen
10-12-2006, 22:12
In general, header của HTTP response mesage sẽ được gởi đi đầu tiên, do đó, một khi bạn đã output ở đâu đó rồi thì nếu dùng các hàm modify đến cái header như header(), session_start ... thì sẽ lỗi như trên.
Giải pháp? Bạn tìm những chỗ dư các ký tự ở đầu/cuối file xóa nó đi. Vì các ký tự này PHP hiểu là bạn output, rồi check lai code flow của mình coi có chỗ nào mình output trước khi gọi các hàm làm sửa đổi header không là xong...

superthinb
10-12-2006, 22:29
Cẩn thận với cái dấu BOM gì đó khi mà code của bạn lưu ở dạng UTF-8 hay Unicode. Có một số phần mềm soạn code không hiển thị dấu này cho bạn thấy nhưng nó luôn tồn tại.

Cách xóa bỏ: hãy để trỏ chuột trước <?php và bấm phím Delete vài lần cho hết cả <?php và gõ lại

Ở cuối file thì mang trỏ chuột về cuối cùng, xóa sao cho chỉ còn ?> mà không theo sau nó bất kỳ cái gì là OK

mrtungs
26-11-2011, 22:17
em vừa bị xong, em convert cái file config sang UTF8 thì dính cước xong covert về ANSI thì lại bình thường :D. Chia sẻ thôi ạ

bvnguyen
28-11-2011, 14:33
trước header() không được sử dụng echo, khi mở bằng trình soạn thảo code của bạn, tìm chỗ nào có UTF-8 Without BOM mà chọn

hoangtk
28-11-2011, 16:03
Trước khi gởi HTTP header, không được echo hay send đi bất kỳ kí tự nào. Bạn kiểm tra lại nhé. Tốt nhất là đặt <?php đầu tiên ở tât cả các file PHP.