Опубликовано: 21 сентября 201114 г Возможна-ли такая "локализация" сайта, как запрет загрузки счетчиков (грубо говоря, внешних картинок), для посетителей с определенного диапазона IP?Если у провайдера авария с инетом, то форум, доступный по локалке, начинает реально подтормаживать, по понятной причине.Вот я и хочу, что бы для "локальных" юзеров грузилась только "локальная" часть сайта, без внешних ссылок :)Возможно ли это как-то организовать?
Опубликовано: 21 сентября 201114 г Конечно, возможна. Добавьте в initdata.php в начало что-то вроде:function netmask_match ( $network , $ip ) { $ip_arr = explode ( '/' , $network ); $network_long = ip2long ( $ip_arr [ 0 ]); $x = ip2long ( $ip_arr [ 1 ]); $mask = long2ip ( $x ) == $ip_arr [ 1 ] ? $x : 0xffffffff << ( 32 - $ip_arr [ 1 ]); $ip_long = ip2long ( $ip ); return ( $ip_long & $mask ) == ( $network_long & $mask ); } $allowed_masks = array( '10.0.0.0/8', '192.168.0.0/16', ); $match = false; $ip = $_SERVER['REMOTE_ADDR']; foreach( $allowed_masks as $mask ) { if ( netmask_match ( $mask , $ip ) ) { $match = true; break; } } define('OUR_USER', $match); Теперь в шаблонах можно везде, где требуется, опираться на условие:<if test="OUR_USER">Привет пользователю нашей сети!</if> или, например:<if test="!OUR_USER">Код счетчика</if>
Опубликовано: 21 сентября 201114 г Автор Конечно, возможна. Добавьте в initdata.php в начало что-то вроде:function netmask_match ( $network , $ip ) { $ip_arr = explode ( '/' , $network ); $network_long = ip2long ( $ip_arr [ 0 ]); $x = ip2long ( $ip_arr [ 1 ]); $mask = long2ip ( $x ) == $ip_arr [ 1 ] ? $x : 0xffffffff << ( 32 - $ip_arr [ 1 ]); $ip_long = ip2long ( $ip ); return ( $ip_long & $mask ) == ( $network_long & $mask ); } $allowed_masks = array( '10.0.0.0/8', '192.168.0.0/16', ); $match = false; $ip = $_SERVER['REMOTE_ADDR']; foreach( $allowed_masks as $mask ) { if ( netmask_match ( $mask , $ip ) ) { $match = true; break; } } define('OUR_USER', $match); Теперь в шаблонах можно везде, где требуется, опираться на условие:<if test="OUR_USER">Привет пользователю нашей сети!</if> или, например:<if test="!OUR_USER">Код счетчика</if> гениально! ;)
Опубликовано: 24 сентября 201114 г Автор Конечно, возможна. Добавьте в initdata.php в начало что-то вроде:function netmask_match ( $network , $ip ) { $ip_arr = explode ( '/' , $network ); $network_long = ip2long ( $ip_arr [ 0 ]); $x = ip2long ( $ip_arr [ 1 ]); $mask = long2ip ( $x ) == $ip_arr [ 1 ] ? $x : 0xffffffff << ( 32 - $ip_arr [ 1 ]); $ip_long = ip2long ( $ip ); return ( $ip_long & $mask ) == ( $network_long & $mask ); } $allowed_masks = array( '10.0.0.0/8', '192.168.0.0/16', ); $match = false; $ip = $_SERVER['REMOTE_ADDR']; foreach( $allowed_masks as $mask ) { if ( netmask_match ( $mask , $ip ) ) { $match = true; break; } } define('OUR_USER', $match); Теперь в шаблонах можно везде, где требуется, опираться на условие:<if test="OUR_USER">Привет пользователю нашей сети!</if> или, например:<if test="!OUR_USER">Код счетчика</if> похоже, что не работаетпрописал диапазоны, зашел на страницу, счетчики пропализашел через прокси и анонимайзеры - счетчики не вернулись!
Опубликовано: 24 сентября 201114 г Выведите где-нибудь в подвале сайта блок: Ваш IP: {$_SERVER['REMOTE_ADDR']}. <if test="OUR_USER">Вы из нашей сети<else />Вы не из нашей сети</if> И проверьте работу по нему. Код тестировал. Возможно, вы как-то не так не задействовали прокси, или PHP получает неверный IP.
Опубликовано: 24 сентября 201114 г Автор Выведите где-нибудь в подвале сайта блок: Ваш IP: {$_SERVER['REMOTE_ADDR']}. <if test="OUR_USER">Вы из нашей сети<else />Вы не из нашей сети</if> И проверьте работу по нему. Код тестировал. Возможно, вы как-то не так не задействовали прокси, или PHP получает неверный IP. Блок работает верно - через проксЮ написал "вы не из нашей сети", да и в обоих случаях он вывел верный IP скорее всего оно не понимало "!OUR_USER", так как последняя конструкция, с включенными внутрь счетчиками, принимается на ура! а до этого оно не работало по причине "анонимайзер превращал все ссылки в локальные от своего имени" Изменено 24 сентября 201114 г пользователем muslimgauze
Возможна-ли такая "локализация" сайта, как запрет загрузки счетчиков (грубо говоря, внешних картинок), для посетителей с определенного диапазона IP?
Если у провайдера авария с инетом, то форум, доступный по локалке, начинает реально подтормаживать, по понятной причине.
Вот я и хочу, что бы для "локальных" юзеров грузилась только "локальная" часть сайта, без внешних ссылок :)
Возможно ли это как-то организовать?