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?
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