Мы используем следующую функцию для автоматического обнаружения, если мы на машине внутри или на живом сервере, а затем выбрать соответствующие конфиги для различных компонентов:Автоопред внутренняя/внешняя среда разработки
function devIsLocal(){
$res=false;
$http_host=$_SERVER['HTTP_HOST'];
if($http_host=='localhost')$res=true;
if($http_host=='127.0.0.1')$res=true;
if(substr($http_host,-4)=='.lan')$res=true;
if(strpos($http_host, '.')===false)$res=true;
return($res);
}
Как вы можете см. это зависит только от значения HTTP_HOST.
Конечно, если вы используете какой-то виртуальный хост локально, например example.com, тогда функция будет обманута.
Есть ли другие способы обмануть функцию? и какие другие переменные/места мы могли бы заглянуть, чтобы определить, где мы находимся?
Он также не будет, если вы получите доступ к локальному серверу с его общедоступным IP-адресом. –
+1 для упоминания проверки IP-адреса. Энди прав, нам также придется добавить диапазоны ip, зарезервированные для интрасетей. Будет ли это работать тогда? – zaf
@zaf: Да, конечно. Энди неправильно понял это как полное решение, а я просто хотел показать общую концепцию. Возможно, мне нужно быть более явным в будущем ...:// – fuxia