Здраствуйте... Подскажите пожалуйста как можно проверить принадлежит ли ip адрес заданному диапазону? PHP: <? $s="$REMOTE_ADDR"; if (?????) { echo "yes!"; } else { echo "No!"; ?> Если криво задал вопрос, скажите- перефразирую ) сорри за глупые вопросы, умные пока придумать не могу...
PHP: $check_ip = explode('.', "127.0.0.2"); $user_ip = explode('.', $_SERVER['REMOTE_ADDR']); for($i=0;$i<4;$i++){ if (($check_ip[$i] == $user_ip[$i]) OR $check_ip[$i] == "*") $do = true; else {$do = false; break; } } if($do) echo 'yes'; else echo 'no';
пусть $d1 и $d2 - диапазоны в виде "x.x.x.x" (например 1.2.3.4 - 1.2.3.100) переводи их в числа (4-байтные как бы) чтобы небыло никаких точек. просто числа. далее переводи в такое же число заданый адрес, и если конец_диапазона >= заданый_адрес >= начало_диапазона то yes, иначе нет. UPD поскольку коллега Green_Bear успел написать ответ быстрее меня, читай его код (правда я неуверен что он правильный)
надо было уточнить как задан диапазон уточняй сразу что нужно и пиши пример так: PHP: <? $d1 = "1.2.3.4"; $d2 = "1.2.3.10"; # или по другому, как хотел то? $s=$_SERVER["REMOTE_ADDR"]; # так правильнее if (?????) { echo "yes!"; } else { echo "No!"; } # забыл "}" ?>
кез, а чо там не правильного? поставить * за место цифры =)) например 127.0.*.* и все =\ правда я не учел, что твое... например 127.0.0.1 - 127.0.0.15 =\ но это уже надо более точно узнать у автора топика, что ему конкретно надо.
PHP: $text="$REMOTE_ADDR"; $text=strrev($text); $last =strchr($text, "."); $last =strrev($last); if ($last=="127.0.0.") { echo "yes!"; } else { echo "No!";
2GreenBear твой код неправильный. сравнивать символы на равенство?) 2TaNkist это вообще что? 2BlackLogic а это что? -- вообще советую перечитывать свои сообщения перед постом. ЗЫ сегодня победил кез.
тк в пхп тип Integer по-умолчанию знаковый и ip2long может вернуть отрицательное значение, то делаем так: самому не нравится...
ну у каждой задачи есть множесвто решений. так что если ты делаешь по другому, то не значит что у других не правильно другое дело, что я вопрос не правильно понял =). .. как уже написал выше.
2 GreenBear Нет... Как раз у него всё правильно. Блин, только допечатал, а он уже написал. Свой пример удалил.
Причём тут делать как он? Всякие там функции типа _http://php.net/ip2long _http://php.net/long2ip использовать намного правильнее нежели эм.м.. другое...вот.
мда... у меня работает код? - да. тогда хули вы прикопались как он работает? =(( оцтаньте. как хачу, так и пешу.
Правильно, у каждого своя монера писать код, у кого он большой у мого вобще маленький, кто любит классы кто нет)))
PHP: <?phpfunction checkIPorRange ($ip, $ip_address) { if (ereg("-",$ip_address)) { $ar = explode("-",$ip_address); $your_long_ip = ip2long($ip); if ( ($your_long_ip >= ip2long($ar[0])) && ($your_long_ip <= ip2long($ar[1])) ) { return TRUE; } } else { if ($ip == $ip_address) { return TRUE; } } return FALSE;}$ip_range = "210.100.55.25-214.43.244.17";if (checkIPorRange($_SERVER["REMOTE_ADDR"], $ip_range)) echo "принадлежит!";else echo "Нееет";?> Блин, никто не накого не наезжаетъ, и ничего не говорит про его код. Сказали как правильнее...
>>Пусть он любой берёт. Все примеры работают. твой код НЕ работает, потому что например 10>-9, но сдвинем по кругу и что тогда?
Вот у меня щас лицо такое же как на аве. У меня всё работает прекрасно. В чём проблема-то. Объясни тогда подоступнее...