php определяет, является ли индекс документа локальным - PullRequest
3 голосов
/ 13 февраля 2012

Мне интересно, как я могу определить, находится ли пользователь на локальном хосте.

Моя причина в том, чтобы я мог автоматически запускать производственный код на работающем сервере, но несжатый код на моей машине, без необходимости постоянно менять ссылку.

Я знаю, что могу сделать это в JS следующим образом ... if (document.URL.indexOf ("localhost: 8888") <= 0) {</p>

Но мне нужно сделать это в Php для моей установки WordPress.Я сталкивался с подобным вопросом здесь - Как я могу определить, находится ли пользователь на локальном хосте в PHP?

Итак, я попробовал это (ниже), но ничего не загружается

<?php if(IPAddress::In(array("127.0.0.1","::1"))) { ?>
        <script src="<?php bloginfo('template_url'); ?>/js/scripts.js"></script>
<?php } ?>

Я также попробовал предлагаемое решение здесь, но, опять же, у меня не работает Как я могу определить, находится ли пользователь на локальном хосте в PHP?

Если эти подробности помогут, я использую MAMP на Mac с установкой WordPress.

Ответы [ 3 ]

13 голосов
/ 13 февраля 2012

Используйте глобальные переменные $ _SERVER: http://www.php.net/manual/en/reserved.variables.server.php

if (in_array($_SERVER['REMOTE_ADDR'], array('127.0.0.1', '::1'))) {
    // code for localhost here
}

РЕДАКТИРОВАТЬ : Что касается комментария TerryE, вы можете захотеть сделать что-то подобное (или посмотреть его регулярное выражение, хотя это может и не понадобиться):

if (substr($_SERVER['REMOTE_ADDR'], 0, 4) == '127.'
        || $_SERVER['REMOTE_ADDR'] == '::1') {
    // code for localhost here
}

Поскольку localhost может быть любым в 127.0.0.0/8, хотя 127.0.0.1 является наиболее распространенным. http://en.wikipedia.org/wiki/Localhost

Хотя мой первоначальный ответ, вероятно, будет хорошим (именно это Symfony2 использует по умолчанию для «защиты» app_dev.php от случайного использования в производственной среде)

1 голос
/ 13 февраля 2012

Как и в ответе Мэтта, вы можете использовать сервер var

if(!(strpos($_SERVER['SERVER_NAME'], 'localhost') === false)){
   //on localhost
}
0 голосов
/ 13 февраля 2012

Используйте preg_match('!127\.0\.\d+\.\d+!', $_SERVER["REMOTE_ADDR"]).Совпадение с классом Б будет в порядке, потому что иногда оно приходит на 127.0.1.1 и т. Д.

...