2010-10-01 47 views
6

Làm cách nào để chạy điều này trước mỗi tập lệnh php ngoài việc đặt nó vào tất cả chúng?Thực thi tập lệnh php trước mỗi tập lệnh php?

if ($_SERVER['REMOTE_ADDR'] == '123.123.123.123') 
{ 
$_SERVER['REMOTE_ADDR'] = $_SERVER['HTTP_X_REAL_IP']; 
} 

Tôi về cơ bản cũng muốn ảnh hưởng tương tự như đặt ở đầu mỗi tập lệnh mà không thực sự làm điều đó.

+3

Lưu ý rằng tiêu đề 'HTTP_X_REAL_IP' có thể dễ dàng được khách hàng giả mạo, trong khi đó không dễ dàng cho' REMOTE_ADDR'. –

+1

Bạn không có một mục nhập duy nhất cho ứng dụng của mình? – halfdan

+0

Đó là lý do tại sao 'if' ở đó. Địa chỉ mà nó kiểm tra là ip máy chủ proxy của tôi. – Will

Trả lời

10

Đặt tệp đó vào tệp riêng và đặt cấu hình auto_prepend_file trong tệp php.ini/.htaccess để trỏ đến tệp đó.

Cập nhật: Kể từ khi bạn đề cập đến lighttpd trong một chú thích, lưu ý rằng bạn có thể cấu hình nó như thế này trong các tập tin INI toàn cầu với PHP 5.3:

[PATH=/vhost/domain.com] 
auto_prepend_file = /vhost/domain.com/foo.php 

[HOST=domain.com] 
auto_prepend_file = /vhost/domain.com/foo.php 

Hoặc bạn có thể tạo ra các tập tin /vhost/domain.com/.user.ini và làm tương tự:

auto_prepend_file = /vhost/domain.com/foo.php 
+0

Liên quan: http://stackoverflow.com/questions/3792069/how-to-include-a-php-file-site-wide-using-htaccess-or-other-methods/3792076#3792076 – NullUserException

+1

+1 cho ví dụ về lighttpd . Tôi bị cám dỗ để thêm "lighthttpd" vào tiêu đề câu hỏi cho các thế hệ tương lai –

+0

Đi cho nó: D. Cũng chỉ cần thử nó và nó hoạt động đẹp. – Will

1

Nếu bạn có các quyền cần thiết để thay đổi cấu hình PHP, auto_prepend_file chính xác là những gì bạn đang tìm kiếm.

auto_prepend_file Chỉ định tên tệp được phân tích cú pháp tự động trước tệp chính. Tệp được bao gồm như thể nó được gọi với hàm require(), vì vậy include_path được sử dụng.

Giá trị đặc biệt none tắt tính năng tự động thêm trước.

+0

Cảm ơn, chỉ tò mò sẽ có một cách đẹp hơn để làm điều đó cho lighttpd chỉ cho 1 máy chủ ảo? – Will

+0

PHP 5.3 hỗ trợ các tệp '.user.ini' trên mỗi thư mục khi chạy qua CGI. – Matthew

+0

@ Tôi không biết lighthttpd đủ tốt nhưng bạn có thể đặt tùy chọn trong tệp '.htaccess' –

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