Hướng dẫn how to store ip address in mysql database using php? - làm thế nào để lưu trữ địa chỉ ip trong cơ sở dữ liệu mysql bằng php?

Tôi đã thấy rất nhiều người cố gắng lưu trữ địa chỉ IP trong các trường MySQL VARCHAR - điều này rất không hiệu quả! Có hai cách phổ biến để lưu trữ các IP thân thiện với cơ sở dữ liệu: như một số lục giác và là một số nguyên dài. Tôi đề xuất phương pháp số nguyên dài vì chức năng này đã được triển khai trong PHP. Đây là cách mà nó đã thực hiện:

  1. Tạo một cột trong MySQL để lưu trữ địa chỉ IP. Cho nó loại int [11].
  2. Nhận địa chỉ IP của khách hàng. Tôi sử dụng chức năng này để cả truy xuất và xác nhận IP của máy khách: IP:

function getip[] {
    if [validip[$_SERVER["HTTP_CLIENT_IP"]]] {
        return $_SERVER["HTTP_CLIENT_IP"];
    }

    foreach [explode[",", $_SERVER["HTTP_X_FORWARDED_FOR"]] as $ip] {
        if [validip[trim[$ip]]] {
            return $ip;
        }
    }

    if [validip[$_SERVER["HTTP_PC_REMOTE_ADDR"]]] {
        return $_SERVER["HTTP_PC_REMOTE_ADDR"];
    } elseif [validip[$_SERVER["HTTP_X_FORWARDED"]]] {
        return $_SERVER["HTTP_X_FORWARDED"];
    } elseif [validip[$_SERVER["HTTP_FORWARDED_FOR"]]] {
        return $_SERVER["HTTP_FORWARDED_FOR"];
    } elseif [validip[$_SERVER["HTTP_FORWARDED"]]] {
        return $_SERVER["HTTP_FORWARDED"];
    } else {
        return $_SERVER["REMOTE_ADDR"];
    }
}

function validip[$ip] {
    if [!empty[$ip] && ip2long[$ip] != -1] {
        $reserved_ips = array[
            array['0.0.0.0', '2.255.255.255'],
            array['10.0.0.0', '10.255.255.255'],
            array['127.0.0.0', '127.255.255.255'],
            array['169.254.0.0', '169.254.255.255'],
            array['172.16.0.0', '172.31.255.255'],
            array['192.0.2.0', '192.0.2.255'],
            array['192.168.0.0', '192.168.255.255'],
            array['255.255.255.0', '255.255.255.255']
        ];

        foreach [$reserved_ips as $r] {
            $min = ip2long[$r[0]];
            $max = ip2long[$r[1]];
            if [[ip2long[$ip] >= $min] && [ip2long[$ip] 

Bài Viết Liên Quan

Chủ Đề