Hướng dẫn php auto prepend file - php tự động thêm trước tệp

Hướng dẫn php auto prepend file - php tự động thêm trước tệp

Bài viết này sẽ chỉ cho bạn cách sử dụng các chỉ thị cấu hình PHP Auto_Prepend_File và Auto_Append_File. Hai chỉ thị PHP này thực hiện cùng một hàm như yêu cầu () nhưng chúng thực hiện nó trên toàn cầu trên tất cả các tập lệnh PHP. Chỉ thị của PHP Auto_Prepend_File và Auto_Append_File chỉ có thể được sử dụng trong các tệp php.ini. Chúng không hoạt động khi được sử dụng trong tệp .htaccess, tôi đã đề cập đến việc này để bạn không lãng phí thời gian quý giá để chỉnh sửa tệp .htaccess của bạn. Nếu bạn muốn đặt các chỉ thị cấu hình này trên cơ sở thư mục, bạn có thể sử dụng chúng trong tệp Php.ini tùy chỉnh của mình.

Mục đích của các chỉ thị cấu hình PHP này là thực thi một tệp được chỉ định trước hoặc sau khi có tập lệnh PHP được lưu trữ trên máy tính/máy chủ của bạn. Điều này tương tự như sử dụng hàm yêu cầu () ở đầu hoặc cuối tập lệnh PHP. Chỉ thị AUTO_PREPEND_FILE phân tích tệp trước khi thực thi bất kỳ tệp PHP nào, vì vậy điều này có thể cực kỳ hữu ích nếu bạn có một tập hợp các hàm PHP do người dùng xác định cần được gọi trong tất cả các tập lệnh PHP.

Tôi sẽ giải thích kịch bản này, trước tiên hãy nói rằng bạn đã tạo ra hai chức năng để bổ sung và trừ.

Lưu mã trong một tệp riêng biệt myfunes.php. Bây giờ chỉnh sửa tệp php.ini, tệp này được đặt trong /etc/php.ini trong linux, c: \ php \ php.ini trong windows, c: \ wamp \ bin \ php \ php.ini trong wamp và c: \ Xampp \ Php \ Php.ini trong XAMPP. Tìm và chỉnh sửa dòng sau

auto_prepend_file = "Location to myfunction.php"

Nếu bạn chỉnh sửa một tệp Php.ini tùy chỉnh, bạn nên thêm dòng này. Vị trí bạn chỉ định phải là một vị trí tuyệt đối như /var/www/html/myfunction.php Người dùng Windows nên sử dụng Slash chuyển tiếp trong đường dẫn tệp của họ c: /wamp/www/myfunction.php

Bây giờ tất cả những gì bạn cần làm là gọi chức năng này trong bất kỳ tập lệnh PHP nào bạn mã. Việc sử dụng Chỉ thị Auto_Append_File cũng tương tự nhau, sự khác biệt duy nhất là tệp được chỉ định được phân tích cú pháp sau khi thực thi tập lệnh PHP.

Cách thức mà các chỉ thị cấu hình này hoạt động có thể khiến bạn nghĩ rằng bạn có thể sử dụng chúng để thêm tiêu đề và chân trang tất cả Mã theo cách mà tệp tiêu đề có thẻ chỉ mở cho, toàn bộ nội dung của thẻ, thẻ mở cho nội dung tiêu đề sau đó. Sau đó, tệp chân trang sẽ chứa nội dung chân trang, đóng thẻ và đóng thẻ đóng theo thứ tự đó. Vì vậy, tệp chính bạn mã chỉ nên có nội dung xuất hiện sau nội dung tiêu đề và trước nội dung chân trang. Bạn có nhận thấy nó cồng kềnh như thế nào khi được sử dụng như thế này không? Vì vậy, tốt nhất là bạn sử dụng các chỉ thị Auto_Prepend_File và Auto_Append_File để bao gồm các tập lệnh không tạo ra đầu ra có thể xem được trên trình duyệt như các tập lệnh theo dõi khách truy cập, định nghĩa của người dùng về các hàm như ví dụ được liệt kê ở trên.

Bối cảnh: Tôi đã có một số mã kiểm tra để xem người dùng có phiên hợp lệ trước khi xử lý trang PHP mà tôi muốn đặt làm auto_prepend_file. Tuy nhiên, tôi cần loại trừ trang nơi người dùng cố gắng đăng nhập từ yêu cầu một phiên hợp lệ. Tôi muốn có thể đặt giá trị auto_prepend_file trên cơ sở mỗi thư mục.

Môi trường: Php 5.2.6m Apache 2, chạy PHP dưới dạng CGI không phải là mod_php, trên Windows (nếu điều đó quan trọng) và trên một máy mà tôi có quyền kiểm soát hoàn toàn (không phải là môi trường được lưu trữ)

Sử dụng tệp htaccess đã ra khỏi b/c Tôi không sử dụng mod_php. Tôi đã không thể thay đổi trong php.ini để đặt auto_prepend_file, máy chủ ném lỗi nội bộ. Và ini_set () không hoạt động b/c, nó đã tải tệp kiểm tra phiên trước khi tôi có thể thay đổi giá trị của auto_prepend_file.

Tôi không thấy cách để đặt Auto_Prepend_File trên cơ sở mỗi thư mục nếu bạn không sử dụng mod_php/htaccess. Tui bỏ lỡ điều gì vậy?

Đã hỏi ngày 22 tháng 11 năm 2010 lúc 17:16Nov 22, 2010 at 17:16Nov 22, 2010 at 17:16

CljcljCLJCLJ

1.8375 huy hiệu vàng22 Huy hiệu bạc35 Huy hiệu đồng5 gold badges22 silver badges35 bronze badges5 gold badges22 silver badges35 bronze badges

2

Bạn đề cập đến việc bạn không thể sử dụng các tệp .htaccess nhưng bạn có thể thực hiện sửa đổi thành httpd.conf và làm điều gì đó như thế này:


    Php_value auto_prepend_file c:/wamp/www/dev/prepend.php

Chỉnh sửa - Chỉ cần nhận ra rằng điều này không hoạt động khi chạy như CGI. Tôi nghĩ mặc dù một điều sẽ hoạt động là nếu bạn tạo một bản sao của tệp Php.ini của mình, hãy đặt nó vào thư mục và đặt Chỉ thị dự bị của bạn vào đó như: - just realised this doesnt work when running as CGI. I think though that one thing that will work is if you create a copy of your php.ini file, place it in the directory, and put your prepend directive in there like: - just realised this doesnt work when running as CGI. I think though that one thing that will work is if you create a copy of your php.ini file, place it in the directory, and put your prepend directive in there like:

auto_prepend_file = c:/wamp/www/dev/prepend.php

Đã trả lời ngày 22 tháng 11 năm 2010 lúc 18:24Nov 22, 2010 at 18:24Nov 22, 2010 at 18:24

Robjmillsrobjmillsrobjmillsrobjmills

Phim huy hiệu vàng 18.2K1515 gold badges74 silver badges120 bronze badges15 gold badges74 silver badges120 bronze badges

3

Đã trả lời ngày 22 tháng 11 năm 2010 lúc 18:28Nov 22, 2010 at 18:28Nov 22, 2010 at 18:28

MatthewmatthewMatthewMatthew

46.8K11 Huy hiệu vàng85 Huy hiệu bạc97 Huy hiệu đồng11 gold badges85 silver badges97 bronze badges11 gold badges85 silver badges97 bronze badges

2

Có một hướng dẫn tuyệt vời có tên: Tự động bao gồm các tệp có PHP & Apache giải thích cách thực hiện điều đó với Chỉ thị Apache và mã PHP để nối vào cuối. Đầu tiên, hãy xác định một tệp để bắt trang trước khi xuất ra và nối bất cứ thứ gì bạn muốn:apache directive and PHP code to append at the end. First, define a file to catch the page before it's outputted and append whatever you want:apache directive and PHP code to append at the end. First, define a file to catch the page before it's outputted and append whatever you want:


  var _gaq = _gaq || [];
  _gaq.push(['_setAccount', 'UA-xxxxxxxxx-y']);
  _gaq.push(['_trackPageview']);

  (function() {
    var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
  })();

GA;
  $replace = array('','');
$page = str_replace($replace, "{$script}\r", $page);
// $replace2 = array('','');
// $page = str_replace($replace2, " - My Awesome Site", $page);
return $page;
}
ob_start("appendToFile");
?>

Sau đó thêm chỉ thị Apache vào máy chủ ảo của bạn.Bạn cần phải dự phòng tệp PHP để sử dụng phương thức ob_start():prepend the PHP file in order to use the ob_start() method :prepend the PHP file in order to use the ob_start() method :


    AddType application/x-httpd-php .html .htm
    php_value auto_prepend_file /absolute/path/to/apache-prepend.php

Đã trả lời ngày 25 tháng 1 năm 2011 lúc 21:38Jan 25, 2011 at 21:38Jan 25, 2011 at 21:38

Édouard Lopezédouard LopezÉdouard LopezÉdouard Lopez

37.3K25 Huy hiệu vàng118 Huy hiệu bạc171 Huy hiệu đồng25 gold badges118 silver badges171 bronze badges25 gold badges118 silver badges171 bronze badges

Không phải là câu trả lời bạn đang tìm kiếm?Duyệt các câu hỏi khác được gắn thẻ php apache .htaccess apache2 hoặc đặt câu hỏi của riêng bạn.