kefu/extend/Repository/IpRepository.php

51 lines
1.1 KiB
PHP

<?php
namespace Repository;
/**
* IP限制服务
* Class IpRepositories
* @package repositories
*/
class IpRepository
{
/**
* 检测是否在白名单内,否则拒绝访问
*
* @return void
*/
public function ipAccess(){
$ip = $this->getRemoteIp();
if(!empty($ip)) {
$ipWhite = db('ip_whitelist')->where(['ip_addr' => $ip])->find();
if($ipWhite){
return true;
}
}
return false;
}
/**
* 获取用户的IP
*
* @return void
*/
public function getRemoteIp(){
if(isset($_SERVER['HTTP_X_FORWARDED_FOR'])){
$ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
}elseif(isset($_SERVER['HTTP_CLIENT_IP'])){
$ip = $_SERVER['HTTP_CLIENT_IP'];
}elseif(getenv('HTTP_X_FORWARDED_FOR')){
$ip = getenv('HTTP_X_FORWARED_FOR');
}elseif(getenv('HTTP_CLIENT_IP')){
$ip = getenv('HTTP_CLIENT_IP');
}elseif($_SERVER['REMOTE_ADDR']){
$ip = $_SERVER['REMOTE_ADDR'];
}else{
$ip = null;
}
return $ip;
}
}