Hướng dẫn how can we get ip address of a client in php? - Làm thế nào chúng ta có thể lấy địa chỉ IP của một khách hàng trong php?

Cách đơn giản nhất để có được địa chỉ IP của khách truy cập/máy khách là sử dụng các biến $_SERVER['REMOTE_ADDR'] hoặc $_SERVER['REMOTE_HOST'].

Tuy nhiên, đôi khi điều này không trả về địa chỉ IP chính xác của khách truy cập, vì vậy chúng tôi có thể sử dụng một số biến máy chủ khác để lấy địa chỉ IP.

Các hàm dưới đây đều tương đương với sự khác biệt chỉ trong cách thức và nơi các giá trị được truy xuất.

getenv () được sử dụng để có được giá trị của một biến môi trường trong PHP.

// Function to get the client IP address
function get_client_ip() {
    $ipaddress = '';
    if (getenv('HTTP_CLIENT_IP'))
        $ipaddress = getenv('HTTP_CLIENT_IP');
    else if(getenv('HTTP_X_FORWARDED_FOR'))
        $ipaddress = getenv('HTTP_X_FORWARDED_FOR');
    else if(getenv('HTTP_X_FORWARDED'))
        $ipaddress = getenv('HTTP_X_FORWARDED');
    else if(getenv('HTTP_FORWARDED_FOR'))
        $ipaddress = getenv('HTTP_FORWARDED_FOR');
    else if(getenv('HTTP_FORWARDED'))
       $ipaddress = getenv('HTTP_FORWARDED');
    else if(getenv('REMOTE_ADDR'))
        $ipaddress = getenv('REMOTE_ADDR');
    else
        $ipaddress = 'UNKNOWN';
    return $ipaddress;
}

$ _Server là một mảng chứa các biến máy chủ được tạo bởi máy chủ web.

// Function to get the client IP address
function get_client_ip() {
    $ipaddress = '';
    if (isset($_SERVER['HTTP_CLIENT_IP']))
        $ipaddress = $_SERVER['HTTP_CLIENT_IP'];
    else if(isset($_SERVER['HTTP_X_FORWARDED_FOR']))
        $ipaddress = $_SERVER['HTTP_X_FORWARDED_FOR'];
    else if(isset($_SERVER['HTTP_X_FORWARDED']))
        $ipaddress = $_SERVER['HTTP_X_FORWARDED'];
    else if(isset($_SERVER['HTTP_FORWARDED_FOR']))
        $ipaddress = $_SERVER['HTTP_FORWARDED_FOR'];
    else if(isset($_SERVER['HTTP_FORWARDED']))
        $ipaddress = $_SERVER['HTTP_FORWARDED'];
    else if(isset($_SERVER['REMOTE_ADDR']))
        $ipaddress = $_SERVER['REMOTE_ADDR'];
    else
        $ipaddress = 'UNKNOWN';
    return $ipaddress;
}

Nhiều lần chúng tôi cần lấy địa chỉ IP của khách truy cập cho các mục đích khác nhau. Rất dễ dàng để thu thập địa chỉ IP trong PHP. PHP cung cấp biến PHP $ _Server để có được địa chỉ IP người dùng một cách dễ dàng. Chúng tôi có thể theo dõi các hoạt động của khách truy cập trên trang web cho mục đích bảo mật hoặc chúng tôi có thể biết rằng ai sử dụng trang web của tôi và nhiều hơn nữa.$_SERVER variable to get the user IP address easily. We can track the activities of the visitor on the website for the security purpose, or we can know that who uses my website and many more.

Cách đơn giản nhất để thu thập địa chỉ IP của khách truy cập trong PHP là Remote_addr. Vượt qua 'Remote_addr' trong biến PHP $ _Server. Nó sẽ trả về địa chỉ IP của khách truy cập hiện đang xem trang web.REMOTE_ADDR. Pass the 'REMOTE_ADDR' in PHP $_SERVER variable. It will return the IP address of the visitor who is currently viewing the webpage.

Lưu ý: Chúng tôi có thể hiển thị địa chỉ IP này trên trang web và thậm chí cũng có thể lưu trữ trong cơ sở dữ liệu cho nhiều mục đích khác như - để bảo mật, chuyển hướng khách truy cập đến một trang web khác, chặn/cấm khách truy cập.

Nhận địa chỉ IP của trang web

$ _Server ['remote_addr'] - Nó trả về địa chỉ IP của người dùng hiện đang truy cập trang web. - It returns the IP address of the user currently visiting the webpage.

Ví dụ

Đầu ra

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 loại tình huống như vậy, chúng tôi sẽ thử một cách khác để có được địa chỉ IP thực sự của người dùng trong PHP.

Đầu ra

Flowchart:

Sơ đồ cho chương trình trên sẽ được đưa ra dưới đây.

Hướng dẫn how can we get ip address of a client in php? - Làm thế nào chúng ta có thể lấy địa chỉ IP của một khách hàng trong php?

Nhận địa chỉ IP của trang web

Chúng tôi cũng có thể nhận được địa chỉ IP của bất kỳ trang web nào bằng URL của nó. Vượt qua URL của trang web bên trong hàm gethostbyname ().gethostbyname() function.

Ví dụ

Đầu ra

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


bởi Vincy. Sửa đổi lần cuối vào ngày 2 tháng 7 năm 2022.

Một dòng tập lệnh PHP duy nhất là đủ để có được địa chỉ IP bằng PHP, hầu hết các lần.

Đầu tiên tôi sẽ trình bày rằng một dòng mã PHP, sau đó hiển thị một hàm nhỏ gần như bao gồm các trường hợp còn lại. Tiếp theo là một cuộc thảo luận về các vấn đề về quyền riêng tư để có được địa chỉ IP.

Bài viết này có những điều sau đây,

  1. Một tập lệnh một dòng để nhận địa chỉ IP bằng PHP.
  2. Một chức năng đơn giản để có được địa chỉ IP trong tất cả các trường hợp.
  3. Thảo luận về các vấn đề riêng tư trong việc nhận địa chỉ IP.

Nhận địa chỉ IP bằng PHP trong một dòng


$ _Server là một mảng PHP được đặt bởi máy chủ. Có khả năng giá trị này có thể chưa được thiết lập. & NBSP; cũng lưu ý rằng, các tiêu đề này có thể dễ dàng bị người dùng giả mạo bằng cách tự đặt địa chỉ IP.

Nhận địa chỉ IP bằng PHP

Sau đó, tập lệnh PHP bao gồm phần lớn kịch bản và trả về địa chỉ IP của người dùng.


Phần còn lại của bài viết là cho tính toàn diện. Nếu bạn chỉ muốn lấy địa chỉ IP bằng PHP, bạn có thể dừng lại ở thời điểm này. Sao chép tập lệnh trên và tiếp tục với hành trình địa chỉ IP của bạn.

Cách xác thực địa chỉ IP của người dùng

Địa chỉ IP có thể dễ dàng giả mạo. Nó có thể đến từ phía sau một máy chủ proxy. Cloudflare như proxy có thể được tham gia. Localhost có thể trả về địa chỉ IP không hợp lệ. Vì vậy, nếu bạn muốn xác thực một địa chỉ IP, hãy sử dụng tập lệnh dưới đây.

Lưu đồ để nhận địa chỉ IP

Lưu đồ sau giải thích luồng kiểm soát để lấy địa chỉ IP bằng PHP.

Hướng dẫn how can we get ip address of a client in php? - Làm thế nào chúng ta có thể lấy địa chỉ IP của một khách hàng trong php?

Nhận địa chỉ IP của người dùng cho các trang web được lưu trữ của CloudFlare

Khi trang web được lưu trữ bằng dịch vụ CloudFlare, $_SERVER['REMOTE_ADDR'] sẽ trả về địa chỉ IP của CloudFlare Server chứ không phải địa chỉ IP gốc của người dùng. Vì vậy, trong tình huống như vậy, bạn có thể sử dụng biến được đặt bởi máy chủ CloudFlare để lấy địa chỉ IP.

Tôi đã lấy CloudFlare làm ví dụ. Có nhiều dịch vụ tương tự. Bạn cần nói chuyện với nhà cung cấp dịch vụ đó để biết tiêu đề yêu cầu nào họ đang thiết lập và nhận địa chỉ IP phù hợp.

if (isset($_SERVER["HTTP_CF_CONNECTING_IP"])) {
        $_SERVER['REMOTE_ADDR'] = $_SERVER["HTTP_CF_CONNECTING_IP"];
        $ipAddress = $_SERVER['REMOTE_ADDR'];
}

Độ tin cậy địa chỉ IP

$_SERVER['REMOTE_ADDR'] là biến đáng tin cậy nhất trong danh sách các biến trên.

// Function to get the client IP address
function get_client_ip() {
    $ipaddress = '';
    if (isset($_SERVER['HTTP_CLIENT_IP']))
        $ipaddress = $_SERVER['HTTP_CLIENT_IP'];
    else if(isset($_SERVER['HTTP_X_FORWARDED_FOR']))
        $ipaddress = $_SERVER['HTTP_X_FORWARDED_FOR'];
    else if(isset($_SERVER['HTTP_X_FORWARDED']))
        $ipaddress = $_SERVER['HTTP_X_FORWARDED'];
    else if(isset($_SERVER['HTTP_FORWARDED_FOR']))
        $ipaddress = $_SERVER['HTTP_FORWARDED_FOR'];
    else if(isset($_SERVER['HTTP_FORWARDED']))
        $ipaddress = $_SERVER['HTTP_FORWARDED'];
    else if(isset($_SERVER['REMOTE_ADDR']))
        $ipaddress = $_SERVER['REMOTE_ADDR'];
    else
        $ipaddress = 'UNKNOWN';
    return $ipaddress;
}
2 cũng có thể không chứa địa chỉ IP thực của kết nối TCP. Nó phụ thuộc vào cấu hình SAPI.

Nếu người dùng đứng sau máy chủ proxy,

// Function to get the client IP address
function get_client_ip() {
    $ipaddress = '';
    if (isset($_SERVER['HTTP_CLIENT_IP']))
        $ipaddress = $_SERVER['HTTP_CLIENT_IP'];
    else if(isset($_SERVER['HTTP_X_FORWARDED_FOR']))
        $ipaddress = $_SERVER['HTTP_X_FORWARDED_FOR'];
    else if(isset($_SERVER['HTTP_X_FORWARDED']))
        $ipaddress = $_SERVER['HTTP_X_FORWARDED'];
    else if(isset($_SERVER['HTTP_FORWARDED_FOR']))
        $ipaddress = $_SERVER['HTTP_FORWARDED_FOR'];
    else if(isset($_SERVER['HTTP_FORWARDED']))
        $ipaddress = $_SERVER['HTTP_FORWARDED'];
    else if(isset($_SERVER['REMOTE_ADDR']))
        $ipaddress = $_SERVER['REMOTE_ADDR'];
    else
        $ipaddress = 'UNKNOWN';
    return $ipaddress;
}
3 sẽ được đặt. Nhưng điều này có thể dễ dàng bị người dùng giả mạo bằng cách đặt địa chỉ IP mà anh ta muốn để lộ.

Ngay cả biến

// Function to get the client IP address
function get_client_ip() {
    $ipaddress = '';
    if (isset($_SERVER['HTTP_CLIENT_IP']))
        $ipaddress = $_SERVER['HTTP_CLIENT_IP'];
    else if(isset($_SERVER['HTTP_X_FORWARDED_FOR']))
        $ipaddress = $_SERVER['HTTP_X_FORWARDED_FOR'];
    else if(isset($_SERVER['HTTP_X_FORWARDED']))
        $ipaddress = $_SERVER['HTTP_X_FORWARDED'];
    else if(isset($_SERVER['HTTP_FORWARDED_FOR']))
        $ipaddress = $_SERVER['HTTP_FORWARDED_FOR'];
    else if(isset($_SERVER['HTTP_FORWARDED']))
        $ipaddress = $_SERVER['HTTP_FORWARDED'];
    else if(isset($_SERVER['REMOTE_ADDR']))
        $ipaddress = $_SERVER['REMOTE_ADDR'];
    else
        $ipaddress = 'UNKNOWN';
    return $ipaddress;
}
4 hoặc máy khách-IP cũng có thể được người dùng đặt ở bất kỳ giá trị nào anh ta muốn.

Lấy một ví dụ về một giỏ hàng. Bạn có thể hiển thị giá sản phẩm theo quốc gia người dùng. Trong một kịch bản như vậy, bạn có thể sử dụng địa chỉ IP của người dùng để xác định quốc gia người dùng. Trong một kịch bản như vậy, mã để lấy địa chỉ IP của người dùng phải được chứng minh là đánh giá cao.

Chiều dài trường địa chỉ IP

Khi bạn đang lưu trữ địa chỉ IP trong cơ sở dữ liệu, hãy nhớ có kích thước trường là 45 cho IP đơn. Bởi vì có khả năng cho các địa chỉ IP IPv6. Ở dạng đầy đủ, địa chỉ IP IPv6 có thể có độ dài 45 ký tự.

Cách lấy địa chỉ IP của máy chủ

Sử dụng tên máy chủ, chúng tôi có thể nhận địa chỉ IP của máy chủ bằng cách sử dụng chức năng tích hợp của PHP

// Function to get the client IP address
function get_client_ip() {
    $ipaddress = '';
    if (isset($_SERVER['HTTP_CLIENT_IP']))
        $ipaddress = $_SERVER['HTTP_CLIENT_IP'];
    else if(isset($_SERVER['HTTP_X_FORWARDED_FOR']))
        $ipaddress = $_SERVER['HTTP_X_FORWARDED_FOR'];
    else if(isset($_SERVER['HTTP_X_FORWARDED']))
        $ipaddress = $_SERVER['HTTP_X_FORWARDED'];
    else if(isset($_SERVER['HTTP_FORWARDED_FOR']))
        $ipaddress = $_SERVER['HTTP_FORWARDED_FOR'];
    else if(isset($_SERVER['HTTP_FORWARDED']))
        $ipaddress = $_SERVER['HTTP_FORWARDED'];
    else if(isset($_SERVER['REMOTE_ADDR']))
        $ipaddress = $_SERVER['REMOTE_ADDR'];
    else
        $ipaddress = 'UNKNOWN';
    return $ipaddress;
}
5. Điều này trả về địa chỉ IPv4.


Đầu ra để nhận địa chỉ IP cho Google:

Địa chỉ IP của Google là: 142.250.67.36

Nhận tên máy chủ bằng địa chỉ IP

Điều ngược lại cũng có thể bằng cách sử dụng

// Function to get the client IP address
function get_client_ip() {
    $ipaddress = '';
    if (isset($_SERVER['HTTP_CLIENT_IP']))
        $ipaddress = $_SERVER['HTTP_CLIENT_IP'];
    else if(isset($_SERVER['HTTP_X_FORWARDED_FOR']))
        $ipaddress = $_SERVER['HTTP_X_FORWARDED_FOR'];
    else if(isset($_SERVER['HTTP_X_FORWARDED']))
        $ipaddress = $_SERVER['HTTP_X_FORWARDED'];
    else if(isset($_SERVER['HTTP_FORWARDED_FOR']))
        $ipaddress = $_SERVER['HTTP_FORWARDED_FOR'];
    else if(isset($_SERVER['HTTP_FORWARDED']))
        $ipaddress = $_SERVER['HTTP_FORWARDED'];
    else if(isset($_SERVER['REMOTE_ADDR']))
        $ipaddress = $_SERVER['REMOTE_ADDR'];
    else
        $ipaddress = 'UNKNOWN';
    return $ipaddress;
}
6.

Các vấn đề về quyền riêng tư trong việc nhận địa chỉ IP của người dùng

Địa chỉ IP của khách hàng có thể được coi là thông tin cá nhân trong một số luật nhất định. Nó phụ thuộc vào vùng đất của pháp luật. Bạn không bao giờ biết từ khu vực địa lý nào bạn sẽ nhận được người dùng.

Theo GDPR (Điều 4, Điểm 1; và Recital 49), địa chỉ IP là dữ liệu cá nhân. Tôi sẽ đề nghị thông báo cho người dùng và đồng ý đăng nhập địa chỉ IP. Ngoài ra, hãy gọi nó ra một cách rõ ràng trong tài liệu chính sách bảo mật của bạn.GDPR (Article 4, Point 1; and Recital 49), IP address is a personal data. I would suggest to inform the user and get consent to log the IP address. Also, call it out explicitly in your “Privacy Policy” document.

Nói rõ rằng bạn đang thu thập và đăng nhập địa chỉ IP của người dùng khách hàng và lý do để làm như vậy.

Sự kết luận

Một sự hiểu biết tốt về kịch bản mà bạn sẽ nhận được địa chỉ IP của người dùng là rất quan trọng. Sau đó hiểu rằng người dùng cuối có thể dễ dàng giả mạo địa chỉ IP của mình. Thứ ba hiểu từng biến của máy chủ, từ nơi địa chỉ IP được tìm nạp. Cuối cùng nhưng không kém phần quan trọng, rõ ràng gọi ra trong chính sách bảo mật của bạn rằng bạn đang nhận được địa chỉ IP của người dùng ứng dụng khách.

Trở lại đầu

Làm cách nào để tìm địa chỉ IP của khách hàng của tôi?

Sau khi máy khách thiết lập kết nối thành công với máy chủ, địa chỉ IP của máy khách sẽ được in trên bảng điều khiển máy chủ.printed on the server console.

Địa chỉ IP của máy khách là gì?

Địa chỉ IP khách chỉ mô tả máy tính được sử dụng, không phải người dùng. Nếu nhiều người dùng chia sẻ cùng một máy tính, họ sẽ không thể phân biệt được. Nhiều nhà cung cấp dịch vụ Internet tự động gán địa chỉ IP cho người dùng khi họ đăng nhập.describe only the computer being used, not the user. If multiple users share the same computer, they will be indistinguishable. Many Internet service providers dynamically assign IP addresses to users when they log in.

Bạn có thể nhận được địa chỉ IP từ yêu cầu HTTP không?

Bạn có thể sử dụng remoteaddr để lấy địa chỉ IP và cổng của máy khách từ xa (định dạng là "ip: port"), là địa chỉ của người yêu cầu ban đầu hoặc proxy cuối cùng (ví dụ: bộ cân bằng tải sống trước máy chủ của bạn) . Đây là tất cả những gì bạn có chắc chắn. Điều này là do HTTP nội bộ. Tiêu đề.use RemoteAddr to get the remote client's IP address and port (the format is "IP:port"), which is the address of the original requestor or the last proxy (for example a load balancer which lives in front of your server). This is all you have for sure. This is because internally http. Header.

Máy chủ $ _ là gì ['remote_addr'] là gì?

$ _Server ['remote_addr'] trả về địa chỉ IP từ nơi người dùng đang xem trang hiện tại.Returns the IP address from where the user is viewing the current page.

Làm cách nào để tìm địa chỉ IP khách của tôi ở Laravel?

Để nhận được địa chỉ IP, chúng tôi phải bao gồm sử dụng ummer \ http \ request;trong bộ điều khiển và sau đó thêm mã của thẻ trước dưới đây.Nó sẽ cung cấp địa chỉ IP của mạng.$ clientIp = \ request :: ip ();DD ($ clientip);include use Illuminate\Http\Request; in the controller and then add the code of the below pre tag. It will give the IP address of the network. $clientIP = \Request::ip(); dd($clientIP);

Làm cách nào để lấy địa chỉ Mac và IP của một máy khách được kết nối trong PHP?

Cách lấy địa chỉ MAC của máy khách được kết nối trong PHP: 'Exec ()' là một hàm được sử dụng để chạy một chương trình bên ngoài trong PHP.Nó trả về dòng cuối cùng từ kết quả của lệnh.Để có được địa chỉ MAC, hãy truyền tham số 'GetMac' trả về địa chỉ MAC của máy khách.To get the MAC address, pass the parameter 'getmac' which returns the MAC address of the client.