Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Поиск по диапазону ip! как лучше сделать...
 
 автор: skor   (09.11.2006 в 22:32)   письмо автору
 
 

Есть у меня диапазон ip например 127.0.0.1 - 127.0.0.255
проверяю на соответствие так по трем первым разрядам...

<?
if(ereg("127.0.0."$_SERVER['REMOTE_ADDR'])) {....}
?>


Как Лучше сделать проверку по такому диапазону 127.0.0.1 - 127.0.5.255 ??

Пока что лучшей идеи чем


<?
if(ereg("127.0.0."$_SERVER['REMOTE_ADDR'])) {....}
if(
ereg("127.0.1."$_SERVER['REMOTE_ADDR'])) {....}
if(
ereg("127.0.2."$_SERVER['REMOTE_ADDR'])) {....}
if(
ereg("127.0.3."$_SERVER['REMOTE_ADDR'])) {....}
if(
ereg("127.0.4."$_SERVER['REMOTE_ADDR'])) {....}
if(
ereg("127.0.5."$_SERVER['REMOTE_ADDR'])) {....}
?>
в голову непришло за вечер ))
Подскажите кто нибудь какую нить мыслю ))

   
 
 автор: Unkind   (09.11.2006 в 22:35)   письмо автору
 
   для: skor   (09.11.2006 в 22:32)
 


<?php
if(preg_match("/127\.0\.(\d+)\.(\d+)/"getenv('REMOTE_ADDR')))
{
...
}
?>


P.S. Че, на ваптиме ниче не умеют? ;)

   
 
 автор: skor   (09.11.2006 в 22:43)   письмо автору
 
   для: Unkind   (09.11.2006 в 22:35)
 

ненаю... диапазонов ip туева хуча будет, тут как то в массив или что нить еще )) ))

ЗЫ: на ваптиме все умеют , но нечо незнают ))))))))

   
 
 автор: Unkind   (09.11.2006 в 22:49)   письмо автору
 
   для: skor   (09.11.2006 в 22:43)
 

А че пишешь? Хочешь базу IP-адресов операторов сделать?


<?php
$ib 
= array();
$ib[] = "'83\.149\.(\d+)\.(\d+)'";
$ib[] = "'193\.201\.(\d+)\.(\d+)'";
$ib[] = "'213\.129\.119\.(\d+)'";
$ib[] = "'85\.115\.224\.(\d+)'";
//И т.д.

$mobile_operator false;

for(
$i 0$i $count$i++)
{
if(
preg_match($ib[$i], $_SERVER['REMOTE_ADDR'])) $mobile_operator true;
}

if(
$mobile_operator)
{
//Пользователь похоже с правда с мобильника
}
else
{
//Вероятно с компа...
}
?>

   
 
 автор: skor   (09.11.2006 в 22:53)   письмо автору
 
   для: Unkind   (09.11.2006 в 22:49)
 

база операторов уже есть )))
хочу определять с какого оператора ко мне зашли ))

   
 
 автор: Unkind   (09.11.2006 в 22:55)   письмо автору
 
   для: skor   (09.11.2006 в 22:53)
 

Да. Я не так выразился. :))

   
 
 автор: skor   (09.11.2006 в 23:05)   письмо автору
 
   для: Unkind   (09.11.2006 в 22:49)
 

если не ошибаюсь то эта регулярка равносильна


<? 
if(ereg("127.0."$_SERVER['REMOTE_ADDR'])) {....} 
?>


диапазончики примерно такие
193.201.228.0 - 193.201.230.255 - мегафон москва
193.201.230.0 - 193.201.235.1 - мегафон поволжье
193.201.235.0 - 193.201.237.255 - мегафон кавказ

регулярка увидит 193.201. и даст true

   
 
 автор: Loki   (10.11.2006 в 13:34)   письмо автору
 
   для: skor   (09.11.2006 в 22:32)
 

<?
function 2int($ip) { 
      
$a=explode(".",$ip); 
      return 
$a[0]*256*256*256+$a[1]*256*256+$a[2]*256+$a[3]; 


$ip начало диапазона
$ip['start'] = 2int($ip); 

$ip конец диапазона
$ip['stop'] = 2int($ip); 

$ip искомый
$ip['actual'] = 2int($ip); 

if (
$ip['actual'] >= $ip['start'] && $ip['actual'] <= $ip['stop']){ 
    echo (
"искомый ip лежит в заданном диапазоне"); 

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования