web-dev-qa-db-fra.com

Filtrer une adresse IP

J'ai écrit ce qui suit pour obtenir l'adresse IP de l'utilisateur:

private function getIpAddress()
{
    $server = JFactory::getApplication()->input->server;

    if (!empty($server->get('HTTP_CLIENT_IP')))
    {
        $ip = $server->get('HTTP_CLIENT_IP');
    }
    else if (!empty($server->get('HTTP_X_FORWARDED_FOR')))
    {
        $ip = $server->get('HTTP_X_FORWARDED_FOR');
    }
    else
    {
        $ip = $server->get('REMOTE_ADDR');
    }

    return $ip;
}

Je voudrais filtrer la valeur en utilisant l'approche JFilterInput-> clean () , en utilisant l'une des options disponibles, telles que 'STRING', 'INT', etc.

J'ai regardé INT, mais je ne pense pas que cela permette les adresses IP avec les expressions rationnelles suivantes:

$pattern = '/[-+]?[0-9]+/';

comme il n'accepte pas un .(point).


J'ai ensuite regardé CMD et je me demandais si ce serait le mieux à utiliser car je crois que cela permet un .(point):

$pattern = '/[^A-Z0-9_\.-]/i';

Serait-il préférable d'utiliser CMD? Si non, lequel? Ou serait-il préférable d'utiliser l'un des filtres natifs PHP?

2
Lodder

Pour le moment, j'ai utilisé PHP natif filter_var avec le FILTER_VALIDATE_IP filtre, comme ceci:

return filter_var($ip, FILTER_VALIDATE_IP);

Je suis bien sûr toujours ouvert à d'autres suggestions

2
Lodder