Задача, думаю, простая: Есть несколько диапазонов ip-адресов. Если пользователь попадает в 1-й диапазон, то видит ссылку №1, если во 2-й, то ссылку №2 и т.д. Если же пользователь не попадает в ни в какой из диапазонов, то он тоже видит отдельную ссылку. Если разбить на подзадачи, то я могу их частично реализовать, но как это всё дело объединить?
У меня с синтаксисом проблемы (пора наконец-то купить учебник по php). Я понимаю, что тривиально определить ip через $_SERVER['REMOTE_ADDR'], сравить его с диапазоном, и через echo вывести ссылку. Но это всё на словах пока.
сделайте это, почитайте недельку, вренетесь сюда со словами "спасио парни, я прозрел, давно надо было это сделать. ведь задача и правда была тривиальная!"
DjSunday а я вам конкретно ответи по вашему вопросу, если вы не знаете основ, то как вы хотите это сделать? или хотите чтобы за вас написали? если так, то так и скажите и баксов 10-20 с письмом приложите, как все цивилизованные люди делают. почему когда надо сделать стрижку, то идут в парикмахерскую, а не открывают интернет, спрашивают на форуме и пытаются подстрич себя сами?
Вот код который генерирует ссылку №1 исходя из нескольких ip-диапазонов: PHP: <?php $IPs_arr = array ( array('178.234.67.0', '178.234.67.225'), array('93.127.15.0', '93.127.15.225'), ); $my_ip2long = @ip2long($_SERVER['REMOTE_ADDR']); foreach($IPs_arr as $IPs) { if ( $my_ip2long >= @ip2long($IPs[0]) && $my_ip2long <= @ip2long($IPs[1]) ) echo '<a href="link1">Ссылка1</a>'; } ?> 1. Как лучше впихнуть сюда генерацию ссылки №2 из совершенно других диапазонов? 2. Как сделать так чтобы пользователи, не входящие ни в один из диапазонов, видели свою ссылку?
DjSunday break добавьте в условие, а то вдргу пересещающиеся диапазоны попадутся - человек несоклко ссылок увидит
PHP: <?php // IP-диапазон №1 $IPs_arr = array ( array('81.20.192.0', '81.20.207.255'), array('195.34.224.0', '195.34.255.255'), array('95.179.0.0', '95.179.127.255'), array('172.234.0.0', '172.234.255.255'), ); $my_ip2long = @ip2long($_SERVER['REMOTE_ADDR']); foreach($IPs_arr as $IPs) { if ( $my_ip2long >= @ip2long($IPs[0]) && $my_ip2long <= @ip2long($IPs[1]) ) echo '<a href="link1.ru">Ссылка №1</a>'; } // IP-диапазон №2 $IPs_arr2 = array ( array('83.80.92.0', '83.80.92.255'), array('100.34.224.0', '100.34.255.255'), array('50.179.0.0', '50.179.127.255'), array('178.234.0.0', '178.234.255.255'), ); $my_ip2long2 = @ip2long($_SERVER['REMOTE_ADDR']); foreach($IPs_arr2 as $IPs) { if ( $my_ip2long2 >= @ip2long($IPs[0]) && $my_ip2long2 <= @ip2long($IPs[1]) ) echo '<a href="link2.ru">Ссылка №2</a>'; } // Проверка если пользователь не попадает в IP-диапазоны №1 и №2 $IPs_arr3 = array ( array('81.20.192.0', '81.20.207.255'), array('195.34.224.0', '195.34.255.255'), array('95.179.0.0', '95.179.127.255'), array('172.234.0.0', '172.234.255.255'), array('83.80.92.0', '83.80.92.255'), array('100.34.224.0', '100.34.255.255'), array('50.179.0.0', '50.179.127.255'), array('178.234.0.0', '178.234.255.255'), ); $my_ip2long3 = @ip2long($_SERVER['REMOTE_ADDR']); foreach($IPs_arr3 as $IPs3) { if ( $my_ip2long3 >= @ip2long($IPs3[0]) && $my_ip2long3 <= @ip2long($IPs3[1]) ) {} else {echo ('<a href="link3.ru">Ссылка №3</a>');} } ?> Почему если пользователь не попадает в каждый из 8 диапазонов, то выводится Ссылка №3 восемь раз (нужно один раз), а если попадает, то один раз "своя" ссылка и семь раз Ссылка №3 (нужна только своя ссылка)? (понятно что выводится значение для каждого диапазона). Break куда впихнуть?
Внёс изменения в последнюю часть кода, отвечающую за выявление ip не входящего в диапазон. Посмотрите пожалуйста, код вроде рабочий, но требуется подтверждение спеца! PHP: <?php // IP-диапазон №1 $IPs_arr = array ( array('81.20.192.0', '81.20.207.255'), array('195.34.224.0', '195.34.255.255'), array('95.179.0.0', '95.179.127.255'), array('171.234.0.0', '171.234.255.255') ); $my_ip2long = @ip2long($_SERVER['REMOTE_ADDR']); foreach($IPs_arr as $IPs) { if ( $my_ip2long >= @ip2long($IPs[0]) && $my_ip2long <= @ip2long($IPs[1]) ) echo '<a href="link1.ru">Ссылка №1</a>'; } // IP-диапазон №2 $IPs_arr2 = array ( array('83.80.92.0', '83.80.92.255'), array('100.34.224.0', '100.34.255.255'), array('50.179.0.0', '50.179.127.255'), array('178.234.0.0', '178.234.255.255') ); $my_ip2long2 = @ip2long($_SERVER['REMOTE_ADDR']); foreach($IPs_arr2 as $IPs2) { if ( $my_ip2long2 >= @ip2long($IPs2[0]) && $my_ip2long2 <= @ip2long($IPs2[1]) ) echo '<a href="link2.ru">Ссылка №2</a>'; } // Проверка если пользователь не попадает в IP-диапазоны №1 и №2 function test_IP() { $IPs_arr3 = array ( array('81.20.192.0', '81.20.207.255'), array('195.34.224.0', '195.34.255.255'), array('95.179.0.0', '95.179.127.255'), array('171.234.0.0', '171.234.255.255'), array('83.80.92.0', '83.80.92.255'), array('100.34.224.0', '100.34.255.255'), array('50.179.0.0', '50.179.127.255'), array('178.234.0.0', '178.234.255.255') ); $my_ip2long3 = @ip2long($_SERVER['REMOTE_ADDR']); foreach($IPs_arr3 as $IPs) { if ( $my_ip2long3 >= @ip2long($IPs[0]) && $my_ip2long3 <= @ip2long($IPs[1]) ) return true; } echo '<a href="link3.ru">Ссылка №3</a>';; } test_IP(); ?>
я иногда поражаюь как долго решаются простые задачи)) но я рад что перфекционизмом страдаю не только Я