Dalam banyak aplikasi rangkaian, timbul keperluan untuk mengesahkan sama ada alamat IP tergolong dalam subnet CIDR yang diberikan. Soalan ini meneroka kaedah yang cepat dan cekap untuk perbandingan sedemikian.
Untuk mencapai ini, fungsi, cidr_match(), digunakan. Ia menerima dua parameter: alamat IP dalam format kuad bertitik dan topeng notasi CIDR.
Langkah pertama melibatkan penukaran alamat IP dan subnet kepada integer panjang menggunakan ip2long( ). Subnet CIDR kemudiannya dihuraikan untuk menentukan subnet mask berdasarkan bilangan bit yang ditentukan.
Seterusnya, operasi AND bitwise dilakukan antara alamat IP dan subnet mask. Jika hasilnya sepadan dengan subnet, ini menunjukkan bahawa alamat IP berada dalam subnet yang ditentukan.
Berikut ialah coretan kod untuk fungsi cidr_match():
function cidr_match($ip, $range) { list ($subnet, $bits) = explode('/', $range); if ($bits === null) { $bits = 32; } $ip = ip2long($ip); $subnet = ip2long($subnet); $mask = -1 << (32 - $bits); $subnet &= $mask; # nb: in case the supplied subnet wasn't correctly aligned return ($ip & $mask) == $subnet; }
Dengan menggunakan fungsi ini, anda boleh menentukan dengan cekap sama ada alamat IP kepunyaan subnet CIDR tertentu. Kesederhanaan dan kecekapan pendekatan ini menjadikannya sesuai untuk pelbagai aplikasi berkaitan rangkaian.
Atas ialah kandungan terperinci Bagaimana untuk Menentukan sama ada Alamat IP Kepunyaan Subnet CIDR dengan Cekap?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!