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) <= $max)) return false;
        }

        return true;
    } else {
        return false;
    }
}

  1. Lưu trữ IP trong cơ sở dữ liệu:

$ip = getip();
$longip = ip2long($ip);
$query = sprintf("INSERT INTO table (ipaddr) VALUES (%s)", $longip);
@mysql_query($query, $link) or die("Error inserting record: " . mysql_error());

if (mysql_affected_rows() != 1) {
    //nothing was inserted
} else {
    //1 row was inserted
}

  1. Lấy IP sau (tôi sẽ sắp xếp chúng giảm dần)

$res = @mysql_query("SELECT * FROM table ORDER BY ipaddr DESC")
    or die("Error selecting records" . mysql_error());

while ($row = mysql_fetch_assoc($res)) {
    $ip = long2ip($row['ipaddr']);
    echo "IP: $ip
"
;
}

Đó là nó! Nó dễ dàng, phải không? Bây giờ bạn có thể ngủ ngon khi biết bạn là máy chủ MySQL không ghét bạn!

Làm thế nào để MySQL lưu trữ địa chỉ IP máy khách?

Làm thế nào để MySQL lưu trữ địa chỉ IP máy khách ?..
Tạo một cột trong MySQL để lưu trữ địa chỉ IP ..
Nhận địa chỉ IP của khách hàng ..
Lưu trữ IP trong cơ sở dữ liệu: $ ip = getip ();$ longip = ip2Long ($ ip);$ query = sprintf ("chèn vào bảng (ipaddr) giá trị (%s)", $ longip);@MysQL_Query ($ Query, $ Link) hoặc Die ("Bản ghi chèn lỗi:" .. ..

Làm thế nào để bạn lưu trữ địa chỉ IP?

Lưu trữ IP dưới dạng int (11) không dấu, sau đó sử dụng các hàm inet_aton và inet_NTOA để lưu trữ/truy xuất địa chỉ IP.

Làm cách nào để tìm IP localhost của tôi trong PHP?

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.Pass the 'REMOTE_ADDR' in PHP $_SERVER variable. It will return the IP address of the visitor who is currently viewing the webpage.

Kiểu dữ liệu cho địa chỉ IP trong MySQL là gì?

Mysql.Mặc dù MySQL không có kiểu dữ liệu cho địa chỉ IP, nhưng vẫn dễ dàng so sánh IPS trong MySQL.Sử dụng inet_aton, bạn có thể chuyển đổi địa chỉ IP của mình thành số nguyên trước khi so sánh.MySQL doesn't have a data type for IP addresses, it's still easy to compare IPs in MySQL. Using inet_aton you can convert your IP addresses to integers before you compare.