Skip to main content

[Thủ Thuật PHP] Hướng dẫn lấy địa chỉ IP của người dùng trong PHP

Nhiều khi chúng ta cần lấy địa chỉ IP của người truy cập cho các mục đích khác nhau như bảo mật, huyển hướng khách truy cập đến trang khác, chặn / cấm khách truy cập....

Vậy để thu thập được địa chỉ IP của người dùng một cách dễ dàng trong PHP bằng biến $_SERVER

Cách đơn giản nhất để lấy địa chỉ IP của khách truy cập hiện tại trong PHP là sử dụng REMOTE_ADDR trong biến $_SERVER có sẵn trong PHP. 

Lấy địa chỉ IP của client

$_SERVER ['REMOTE_ADDR'] - Nó trả về địa chỉ IP của người dùng hiện đang truy cập trang web.

Ví dụ: 

<?php  
echo 'User IP Address - '.$_SERVER['REMOTE_ADDR'];  
?>  

Kết quả :

User IP Address - ::1

Nhưng đôi khi REMOTE_ADDR không trả về địa chỉ IP của máy khách và lý do chính đằng sau là sử dụng proxy. Trong tình huống như vậy, chúng tôi sẽ thử một cách khác để lấy địa chỉ IP thực của người dùng trong PHP.

<?php  
    function getIPAddress() {  
    //whether ip is from the share internet  
     if(!emptyempty($_SERVER['HTTP_CLIENT_IP'])) {  
                $ip = $_SERVER['HTTP_CLIENT_IP'];  
        }  
    //whether ip is from the proxy  
    elseif (!emptyempty($_SERVER['HTTP_X_FORWARDED_FOR'])) {  
                $ip = $_SERVER['HTTP_X_FORWARDED_FOR'];  
     }  
//whether ip is from the remote address  
    else{  
             $ip = $_SERVER['REMOTE_ADDR'];  
     }  
     return $ip;  
}  
$ip = getIPAddress();  
echo 'User Real IP Address - '.$ip;  
?>  

Sơ đồ lấy chương trình lấy địa chỉ IP

Sơ đồ cho chương trình trên sẽ giống như dưới đây.

Image
Hướng dẫn lấy đại chỉ IP của khách trong PHP

 

Lấy địa chỉ IP của website

Một cách khác để lấy địa chỉ IP của bất kỳ trang web nào bằng URL của nó bằng gethostbyname().

Ví dụ:

<?php  
$ip_address = gethostbyname("www.google.com");  
echo "IP Address of Google is - ".$ip_address;  
echo "</br>";  
$ip_address = gethostbyname("www.javatpoint.com");  
echo "IP Address of javaTpoint is - ".$ip_address;  
?>  

Kết quả: 

IP Address of Google is - 172.217.166.4
IP Address of javaTpoint is - 95.216.57.234