PHP có thể được sử dụng để lấy Địa chỉ IP của khách truy cập trang web, địa chỉ IP của máy chủ lưu trữ trang web và phân giải địa chỉ IP để lấy tên máy chủ. k. một bản ghi DNS đảo ngược. PHP đã xác định trước biến mảng $_SERVER bằng cách sử dụng địa chỉ IP của cả khách truy cập và máy chủ có thể được truy xuất. Hàm gethostbyaddr[] được sử dụng để tìm ra tên máy chủ. Các chỉ số REMOTE_ADDR và HTTP_HOST chứa địa chỉ IP của khách truy cập và địa chỉ IP của máy chủ Để tìm địa chỉ IP của khách truy cập bằng PHP, hãy sử dụng biến $_SERVER[‘REMOTE_ADDR’]. Ví dụ, đoạn mã sau
sẽ hiển thị địa chỉ IP của khách truy cập cho chính khách truy cập. Nếu bạn muốn ghi lại địa chỉ IP này, hãy chèn giá trị vào cơ sở dữ liệu
Để biết địa chỉ IP của máy chủ web của bạn bằng PHP, hãy sử dụng biến $_SERVER[‘HTTP_HOST’]
Để lấy tên máy chủ của biến, hãy sử dụng hàm gethostbyaddr[] với địa chỉ IP làm tham số. Ví dụ
địa chỉ IP. Địa chỉ Giao thức Internet [địa chỉ IP] là nhãn số được gán cho từng thiết bị được kết nối với mạng máy tính sử dụng Giao thức Internet để liên lạc. Một địa chỉ IP phục vụ hai chức năng chính. nhận dạng giao diện máy chủ hoặc mạng và địa chỉ vị trí
Giao thức Internet phiên bản 4 [IPv4] xác định địa chỉ IP là số 32 bit. Tuy nhiên, do sự phát triển của Internet và sự cạn kiệt của các địa chỉ IPv4 có sẵn, một phiên bản IP mới [IPv6], sử dụng 128 bit cho địa chỉ IP, đã được phát triển vào năm 1995 và được tiêu chuẩn hóa vào tháng 12 năm 1998. Vào tháng 7 năm 2017, một định nghĩa cuối cùng của giao thức đã được xuất bản. Việc triển khai IPv6 đã được tiến hành từ giữa những năm 2000
Địa chỉ IP thường được viết và hiển thị bằng các ký hiệu mà con người có thể đọc được, chẳng hạn như 172. 16. 254. 2 trong IPv4 và 2001. db8. 0. 1234. 0. 567. 8. 1 trong IPv6. Kích thước của tiền tố định tuyến của địa chỉ được chỉ định trong ký hiệu CIDR bằng cách thêm vào địa chỉ một số lượng bit quan trọng, e. g. , 192. 168. 1. 16/24, tương đương với mặt nạ mạng con được sử dụng trong lịch sử 255. 255. 255. 0
Không gian địa chỉ IP được quản lý trên toàn cầu bởi Cơ quan cấp số được gán Internet [IANA] và bởi năm cơ quan đăng ký Internet khu vực. Họ chịu trách nhiệm trong các lãnh thổ được chỉ định của họ để chuyển nhượng cho người dùng cuối và cơ quan đăng ký Internet địa phương, chẳng hạn như nhà cung cấp dịch vụ Internet. Địa chỉ IPv4 đã được IANA phân phối tới các RIR theo khối khoảng 16. 8 triệu địa chỉ mỗi. Mỗi ISP hoặc quản trị viên mạng riêng chỉ định một địa chỉ IP cho từng thiết bị được kết nối với mạng của nó
Nhiều lần chúng tôi cần thu thập địa chỉ IP của khách truy cập để theo dõi hoạt động và vì lý do bảo mật. Rất dễ lấy địa chỉ IP của khách truy cập trong PHP. Biến $_SERVER của PHP cung cấp một cách dễ dàng để lấy địa chỉ IP của người dùng. $_SERVER chứa một mảng cung cấp thông tin liên quan đến máy chủ và môi trường trong PHP
Cách đơn giản nhất để lấy địa chỉ IP của khách truy cập là sử dụng chỉ số REMOTE_ADDR trong phương thức PHP $_SERVER
$_SERVER['REMOTE_ADDR']
– Trả về địa chỉ IP của người dùng đang xem trang hiện tại
echo 'User IP - '.$_SERVER['REMOTE_ADDR'];
Nhưng đôi khi REMOTE_ADDR không trả về đúng địa chỉ IP của người dùng. Lý do đằng sau điều này là sử dụng Proxy. Trong tình huống đó, hãy sử dụng đoạn mã sau để lấy địa chỉ IP thực của người dùng trong PHP
Thật dễ dàng để lấy địa chỉ IP cho một tên miền bằng cách sử dụng các hàm gethostbyname[] và gethostbynamel[] của PHP. Bài đăng này xem xét một số ví dụ về cách sử dụng hàm gethostbyname[] trong PHP để lấy một địa chỉ IP duy nhất cho tên máy chủ
Các miền ví dụ được sử dụng
Các ví dụ trong bài đăng này sử dụng www. cnn. com và www. hộp công cụ điện. com. Tại thời điểm viết bài này, www. cnn. com phân giải thành 4 địa chỉ IP có thể như sau
$ nslookup www.cnn.com Name: www.cnn.com Address: 157.166.226.26 Name: www.cnn.com Address: 157.166.255.18 Name: www.cnn.com Address: 157.166.224.26 Name: www.cnn.com Address: 157.166.226.25
và www. hộp công cụ điện. com phân giải thành một địa chỉ IP duy nhất như sau
$ nslookup www.electrictoolbox.com www.electrictoolbox.com canonical name = electrictoolbox.com. Name: electrictoolbox.com Address: 120.138.20.39
Sử dụng gethostbyname[]
Hàm PHP gethostbyname[] rất đơn giản để sử dụng. Chỉ cần chuyển cho nó tên miền bạn muốn tra cứu và nó sẽ trả về địa chỉ IP cho miền đó hoặc trả lại miền chưa sửa đổi nếu không thành công. Nếu tên miền có nhiều hơn một địa chỉ IP được liên kết với nó [như với www. cnn. com] thì chỉ một địa chỉ IP duy nhất sẽ được trả lại
ví dụ 1
$x = gethostbyname['www.electrictoolbox.com']; var_dump[$x]; // outputs string[13] "120.138.20.39"
ví dụ 2
$x = gethostbyname['www.cnn.com']; var_dump[$x]; // string[14] "157.166.255.19" // OR string[14] "157.166.255.18" // OR string[14] "157.166.224.26" // OR string[14] "157.166.224.25"
ví dụ 3
Ví dụ này dành cho miền không tồn tại và trả về chính miền đó thay vì địa chỉ IP
$x = gethostbyname['www.blah.foo']; var_dump[$x]; // outputs string[12] "www.blah.foo"
Nếu bạn cần làm điều gì đó dựa trên địa chỉ IP không được tìm thấy, bạn có thể làm điều gì đó như thế này
$domain = 'www.blah.foo'; $ip = gethostbyname[$domain]; if[$domain != $ip] { // do something }
Lưu ý rằng việc không thể tìm thấy địa chỉ IP cho miền không có nghĩa là miền đó không tồn tại hoặc thậm chí là bản ghi không tồn tại cho miền [phụ] này. Việc tra cứu DNS có thể đơn giản là đã thất bại
Sử dụng gethostbynamel[]
Hàm PHP gethostbynamel[] trả về một danh sách các địa chỉ IP cho một tên miền và tôi sẽ xem xét một số ví dụ về việc sử dụng hàm này vào thứ Hai