51 lines
1.1 KiB
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;
|
|
}
|
|
} |