andriajah Tue Dec 2021 1 year ago

Memvalidasi Alamat IP dengan fungsi filter_var PHP

Fungsi filter_var PHP dapat memvalidasi apakah alamat IP valid dan selanjutnya dapat memvalidasi apakah itu IP IPv4, IP IPv6, atau tidak dalam rentang pribadi atau yang dicadangkan. Posting ini menunjukkan beberapa contoh menggunakan filter_var.

 

Diperlukan versi PHP minimum

Perhatikan bahwa fungsi filter_var() membutuhkan setidaknya PHP versi 5.2.0. Ini disertakan secara default dengan versi >= 5.2.0

 

Memvalidasi alamat IP

Untuk memeriksa apakah alamat IP valid, lakukan hal berikut:

if(filter_var($ip, FILTER_VALIDATE_IP)) { 
  // valid 
} 
else { 
  // tidak valid 
}

Ini akan mengembalikan alamat $ip yang diteruskan jika valid atau salah jika tidak. Penggunaan dasar di atas akan berlaku untuk semua alamat IP yang valid termasuk IPv4, IPv6, IP rentang pribadi dan yang dicadangkan.

Validasi alamat IP IPv4

Untuk memvalidasi alamat IP IPv4 (mis. 120.138.20.36) flag FILTER_FLAG_IPV4 juga harus diteruskan. Contoh berikut akan berlaku untuk alamat IP IPv4 biasa, serta rentang pribadi dan yang dicadangkan.

if(filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_IPV4 | FILTER_FLAG_NO_PRIV_RANGE)) { 
  // valid 
} 
else { 
  // tidak valid 
}

120.138.20.36 akan valid menggunakan contoh di atas tetapi 192.168.1.1 tidak akan valid.

 

Validasi alamat IPv6

Ini sama dengan alamat IPv4 tetapi menggunakan flag FILTER_FLAG_IPV6:

if(filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_IPV6)) { 
  // valid 
} 
else { 
  // tidak valid 
}

Menggabungkan FILTER_FLAG_IPV4 dan FILTER_FLAG_IPV6?

Dari pengujian saya sendiri, saya telah menemukan bahwa menggabungkan FILTER_FLAG_IPV4 dan FILTER_FLAG_IPV6 (yaitu FILTER_FLAG_IPV4 | FILTER_FLAG_IPV6) sepertinya selalu menghasilkan false. Anda mungkin tidak perlu menggabungkan keduanya karena itulah fungsi yang dilakukan secara default, tetapi saya pikir tidak penting untuk menambahkan catatan tentang ini.

 

Reserved Ranges

Ada sejumlah besar rentang alamat IP yang dicadangkan. Untuk mengecualikan ini, gunakan tanda FILTER_FLAG_NO_RES_RANGE:

if(filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_NO_RES_RANGE)) { 
  // valid 
} 
else { 
  // tidak valid 
}

Excluding Reserved and Private Ranges

Contoh terakhir akan memvalidasi alamat IP IPv4 dan IPv6 apa pun selama itu bukan alamat reserved atau private range IP address:

if(filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_NO_PRIV_RANGE | FILTER_FLAG_NO_RES_RANGE)) {
  // it's valid
}
else {
  // it's not valid
}

Anda selanjutnya dapat membatasi contoh terakhir hanya pada alamat IPv4 atau IPv6 dengan menambahkan “| FILTER_FLAG_IPV4” atau “| FILTER_FLAG_IPV6

check valid ip address with php php cek ip address dengan php