2011-08-18 23 views
5

Tôi có thể làm điều gì đó như thế này không?Tôi có thể tải javascript từ tệp php không?

<script src="/js/custom-user.php" type="text/javascript"></script> 

Lý do đằng sau nó là tôi muốn file .php chết() khi người dùng không đăng nhập, để cho du khách khác (không được xác thực) không thể nhìn thấy những gì javascript trông như thế nào. Có thể/an toàn để làm như thế này?

+5

Có. Bạn sẽ muốn có tiêu đề ('Content-Type: text/javascript'); trong tập tin php của bạn mặc dù. – Cfreak

Trả lời

3

Chắc chắn, miễn là tệp php đang tham chiếu gửi tiêu đề content-type thích hợp khi được tải xuống.

0

Có, điều đó sẽ hiệu quả.

Đó là cách trình tối ưu hóa JavaScript có thể phân phối động các tập lệnh được rút gọn. (ví dụ: http://code.google.com/p/minify/)

2

Có, bạn có thể thực hiện việc này và an toàn.

Trong tùy chỉnh user.php bạn sẽ phải thiết lập một Content-Type tiêu đề phù hợp:

header('Content-Type: text/javascript'); 

Và sau đó sản lượng javascript:

readfile('script.js'); 
1

Có, nhưng ... Bạn nên làm tốt hơn như sau:

<?php 
if ($loggedIn) { echo '<script src="/js/custom-user.js" type="text/javascript"></script>'; } 
?> 

Điều đó sẽ ngăn tải tệp rỗng. Tất cả các chức năng phải được đặt trong tệp bên ngoài, nếu bạn muốn một số thay đổi javascript cụ thể, hãy tạo mã trong HEAD SCRIPT

8

Có, nhưng tôi có hai đề xuất. Đầu tiên, tốt hơn, trong trường hợp của bạn, chỉ xuất ra <script> nếu người dùng đăng nhập. Nghiêm túc, bạn không muốn thứ xuất hiện js để thực sự biết hoặc quan tâm đến việc người dùng có đăng nhập hay không.

Nếu bạn làm js sản lượng trong PHP, sau đó bạn nên bao gồm các tiêu đề thích hợp:

header("Content-type: text/javascript"); 

// either readFile or custom stuff here. 
echo "alert('i canz have data!')"; 
// or, if you're less silly 
readFile('/path/to/super-secret.js'); 

thực ra, tôi đã từng có sản lượng CSS bằng PHP (oh, bạn có thể làm điều đó quá) mà hoàn toàn thay đổi dựa trên nhận được biến. Tôi thật sự có thể có:

rel="stylesheet" type="text/css" href="css.php?v=#FF0000"> 

Và nó sẽ sử dụng #FF0000 như một màu gốc để hoàn toàn tái xác định phối hợp màu sắc trong trang web. Tôi thậm chí đã đi xa như vậy để móc nó vào để tưởng tượng và tái tô màu logo của trang web. Nó trông ghê gớm vì tôi không phải là một nhà thiết kế, nhưng nó là thực sự gọn gàng.

+0

Tôi đồng ý rằng PHP có ý nghĩa hơn khi kiểm tra xem thẻ 'script' có được xuất ở vị trí đầu tiên hay không. Tuy nhiên, nếu vì lý do nào đó bạn thực sự muốn ẩn JS của bạn, bạn phải đặt kịch bản bên ngoài thư mục web của máy chủ, trong trường hợp đó bạn muốn PHP đọc và xuất tệp. –

0

Bạn có thể nhưng nó sẽ làm chậm trang của bạn vì mỗi lần ai đó truy cập vào trang modphp của bạn sẽ phải chạy tập lệnh php/javascript của bạn.

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