Một ngữ cảnh nhỏ:
Tôi cần chạy tập lệnh PHP trong trình duyệt, nhưng tôi không muốn gặp phải sự cố khi cài đặt máy chủ và chịu phí trên máy chủ trên máy tính của mình và tất cả những thứ đi kèm với nó, bao gồm tường lửa, blah blah blah.Tiêu đề() hoạt động như thế nào?
Vì vậy, thay vào đó tôi đã viết máy chủ của riêng mình. Đó là một kịch bản PHP đơn giản mà lắng nghe các kết nối trên cổng 80 của LAN IP của tôi, sau đó tôi chỉ cần tải IP đó trong trình duyệt của tôi và nó hoạt động. Nó nhận được yêu cầu HTTP và bắt đầu một kịch bản PHP thứ hai bằng cách sử dụng exec
- điều này là để tôi có thể thực hiện các thay đổi cho nó một cách dễ dàng mà không phải khởi động lại kịch bản máy chủ. Tập lệnh PHP thứ hai này phân tích cú pháp yêu cầu và cuối cùng là include
s tập lệnh thực sự được gọi. Nó nhận được kết quả từ đó và gửi phản hồi trở lại trình duyệt với các tiêu đề thích hợp (mà tôi có thể thay đổi).
Vâng, đó là một mớ hỗn độn, nhưng nó hoạt động. Nó làm những gì tôi cần nó để làm.
Bây giờ cho câu hỏi:
Tôi không thể sử dụng header()
. Nó dường như không có bất kỳ ảnh hưởng nào đến những gì được gửi trở lại trình duyệt thông qua kết nối socket. Thay vào đó, tôi đã thực hiện chức năng setheader()
và lưu trữ các tiêu đề trong một mảng để được thêm vào phần trả lời.
Tôi muốn biết cách chức năng header()
thực sự hoạt động bên trong, để tôi có thể sử dụng chức năng đó thay vì chức năng "bị tấn công" của tôi.
[Từ hướng dẫn:] (http://docs.php.net/manual/en/function.header.php) * Headers sẽ chỉ có thể truy cập và xuất ra khi một SAPI hỗ trợ chúng đang được sử dụng. * – Gordon
Bạn có thể vui lòng in phản hồi mẫu được gửi bởi kịch bản máy chủ của bạn tới trình duyệt sẽ bao gồm tiêu đề và nội dung không? –