ユーザーIPを取得するために次のように記述しました。
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;
}
JFilterInput-> clean() アプローチを使用して、'STRING'
、'INT'
などの使用可能なオプションの1つを使用して、値をフィルタリングしたいと思います。
私はINT
を調べましたが、これで次の正規表現を持つIPが許可されるとは思われません。
$pattern = '/[-+]?[0-9]+/';
.
(ドット)を受け入れないため。
次にCMD
を確認し、.
(dot)を許可しているので、これが使用に最適かどうか疑問に思いました。
$pattern = '/[^A-Z0-9_\.-]/i';
CMD
を使用するのが最善でしょうか?そうでない場合、どれですか?または、ネイティブのPHPフィルターのいずれかを使用するのが最善でしょうか?
とりあえず、PHPネイティブfilter_var
とともに FILTER_VALIDATE_IP
フィルター、次のように:
return filter_var($ip, FILTER_VALIDATE_IP);
もちろん私はまだ他の提案を受け入れています