2012-05-04 33 views
5

Xin chào, tôi có một câu hỏi khác, tôi đang viết một trang web đơn giản bằng PHP và tôi gặp vấn đề với khả năng hiển thị trang web của mình trong mạng cục bộ. tôi đã sử dụngPHP - cách làm cho trang chỉ hiển thị trong mạng cục bộ

$_SERVER['REMOTE_ADDRESS'] 

, nhưng tôi muốn hiển thị trong mạng LAN của mình.

Làm cách nào tôi có thể thực hiện việc này ??

+0

Bạn đã thử xác định địa chỉ IP nội bộ chưa? – Lix

+0

Máy chủ có đang phục vụ các trang web trên cùng một mạng với máy tính bạn đang sử dụng để truy cập vào nó không? Bạn nên chắc chắn rằng nó là, và rằng bạn không có nó được phục vụ trên một số cổng lạ, như: 8888 hoặc một cái gì đó. – Josh

+2

Bạn nên làm điều này trong máy chủ web hoặc cấu hình tường lửa, không phải trong mã PHP của bạn. –

Trả lời

12

cũng bằng .htaccess bạn có thể cho phép từ y ip của chúng tôi/subnet, như thế này:

Order Deny,Allow 
Deny from all 
Allow from 192.168.1.1/24 

tất nhiên nó phải phù hợp với mạng LAN của bạn

+0

Xin chào, tôi cho rằng câu hỏi này hơi cũ nhưng tôi gặp sự cố. Tôi đã thử điều này cho mạng LAN của tôi ('192.168.2.1/24') và nó hoạt động tốt cho các máy tính khác trong mạng, nhưng tôi vẫn gặp lỗi 403 khi truy cập nó từ cùng một máy tính, máy chủ chạy. Tôi cũng đã thêm 127.0.0.1 nhưng nó không có hiệu lực. Bạn có thể giúp tôi? – Scriptim

0

Tôi không hoàn toàn chắc chắn nhưng có lẽ đây là một giải pháp tốt, đủ:

if(substr($_SERVER['REMOTE_ADDRESS'], 0, 3) == '10.') { 
    // welcome... 
} 
+0

Sẽ không hoạt động nếu IP của bạn không nằm trong khối '10.0.0.0/8'. – Tibor

+0

@Vic không phải là 10. dành riêng cho máy in? – Ozzy

+1

Tất nhiên là không! Nó là một sự lựa chọn hoàn toàn hợp lệ của các IP cho một mạng nội bộ. Xem http://www.faqs.org/rfcs/rfc1918.html#b – Tibor

5

Bạn nên làm điều này trong tập tin .htaccess bạn.

Trước tiên, bạn chỉ định Từ chối tất cả, sau đó chỉ định danh sách địa chỉ IP sẽ được cho phép.

order deny,allow 
deny from all 
allow from X.X.X.X 
allow from X.X.X.X 
allow from X.X.X.X 

Bạn có thể cho phép dao động như thế này:

allow from 10.0.0.0-10.255.255.255 
allow from 10.0-255.0-255.0-255 
allow from 10.*.*.* 

Nếu bạn muốn cho phép 1.2.3.254, 1.2.3.255, 1.2.4.1, 1.2.4.2, 1.2.4.3, và 1.2.4.4,
bạn có thể làm điều đó như thế này:

allow from 1.2.3.254-1.2.4.4 
+5

Bạn cũng nên bật ít nhất 'fe80 ::/64' nếu bất kỳ khách hàng nào của bạn cố gắng truy cập thông qua IPv6 (đó là tương lai của internet và không nên được bẻ khóa!) – Tibor

+0

Apache trả về lỗi bằng cách sử dụng mã đã cho: 'thứ tự nhận một đối số, 'cho phép, từ chối', 'từ chối, cho phép' hoặc 'lẫn nhau-thất bại''. Ô trống thứ hai trong 'từ chối đơn hàng, cho phép' phải được loại bỏ. –

+0

Tôi hiện đã cập nhật câu trả lời để phản ánh điều này, nhờ @MarcelPfeiffer – Ozzy

1

Câu trả lời bình chọn cao nhất là đúng đối với Apache 2.2. Nếu bạn sử dụng 2,4, bạn phải sử dụng một cái gì đó như thế này:

<Limit GET POST> 
Require all denied 
Require ip 192.168.1.0/24 
</Limit> 
Các vấn đề liên quan