Dans le développement de PHP, il est souvent nécessaire de vérifier si l'adresse IP fournie par l'utilisateur est légale. Dans de nombreux scénarios, en particulier lors de la gestion des connexions client ou des demandes d'API, la vérification IP est une caractéristique cruciale. Cet article expliquera comment utiliser la fonction get_client_version () et la fonction Filter_var () intégrée de PHP pour déterminer si l'adresse IP est légale.
Tout d'abord, nous devons obtenir l'adresse IP du client. En règle générale, l'IP du client peut être obtenu par Remote_Addr dans le tableau hyperglobal $ _Server , mais dans certains cas, tel que l'utilisation d'un serveur proxy ou d'un équilibreur de chargement, Remote_Addr peut renvoyer l'adresse IP du serveur proxy au lieu de l'adresse IP réelle du client. Pour s'assurer que la véritable adresse IP du client peut être obtenue correctement, nous pouvons utiliser le code suivant:
function get_client_ip() {
if (!empty($_SERVER['HTTP_CLIENT_IP'])) {
return $_SERVER['HTTP_CLIENT_IP'];
} elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {
return $_SERVER['HTTP_X_FORWARDED_FOR'];
} else {
return $_SERVER['REMOTE_ADDR'];
}
}
La fonction get_client_ip () hiérarchirera les champs d'en-tête http http_client_ip et http_x_forwarded_for , qui sont souvent utilisés pour identifier la véritable adresse IP du client. Si ces deux champs n'ont aucune valeur, Remote_Addr est renvoyé, c'est-à-dire le client IP par défaut.
Ensuite, nous utilisons la fonction Filter_var () de PHP pour vérifier si l'adresse IP que nous avons obtenue est légale. filter_var () est une fonction très puissante qui vous permet de vérifier les valeurs en fonction du type de vérification transmise. Pour la vérification des adresses IP, nous pouvons utiliser l'option filter_validate_ip .
$ip = get_client_ip(); // Obtenez le clientIPadresse
if (filter_var($ip, FILTER_VALIDATE_IP)) {
echo "IPadresse合法:$ip";
} else {
echo "IPadresse不合法:$ip";
}
Dans cet exemple, filter_var () vérifiera si le nouveau $ ip est une adresse IP valide. Renvoie vrai si l'adresse IP est légale, sinon renvoyez false .
Filter_validate_ip vérifiera les adresses IPv4 et IPv6. Si vous avez seulement besoin de vérifier les adresses IPv4 ou IPv6, vous pouvez limiter le type en spécifiant l'indicateur:
// vérifierIPv4adresse
if (filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_IPV4)) {
echo "IPv4adresse合法:$ip";
} else {
echo "IPv4adresse不合法:$ip";
}
// vérifierIPv6adresse
if (filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_IPV6)) {
echo "IPv6adresse合法:$ip";
} else {
echo "IPv6adresse不合法:$ip";
}
En utilisant les drapeaux filter_flag_ipv4 ou filter_flag_ipv6 , nous ne pouvons vérifier que les adresses des types IPv4 ou IPv6, respectivement.
Enfin, nous pouvons combiner la fonction get_client_ip () et la fonction filter_var () pour écrire un exemple complet pour déterminer si l'adresse IP du client est légale et pour la gérer en conséquence.
// Obtenez le clientIPadresse
$ip = get_client_ip();
// vérifierIPadresse是否合法
if (filter_var($ip, FILTER_VALIDATE_IP)) {
echo "IPadresse合法:$ip";
} elseif (filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_IPV4)) {
echo "IPv4adresse合法:$ip";
} elseif (filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_IPV6)) {
echo "IPv6adresse合法:$ip";
} else {
echo "IPadresse不合法:$ip";
}
Dans cet exemple, nous essayons d'abord de vérifier l'adresse IP normale, s'il ne s'agit pas d'une IP normale, puis vérifions s'il s'agit d'une adresse IPv4 ou IPv6 légitime. Si aucun d'entre eux ne répond aux critères, la sortie est "l'adresse IP est illégale".
J'espère que cet article vous aidera à comprendre comment utiliser get_client_version () et filter_var () pour vérifier si l'adresse IP est légale. Si vous avez plus de questions sur le développement de PHP, n'hésitez pas à poser des questions!