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

Форум PHP

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

 

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

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: Как определить вхождение ip?

Сообщения:  [1-10]   [11-19] 

 
 автор: Лена   (15.10.2009 в 13:18)   письмо автору
 
   для: Trianon   (15.10.2009 в 12:23)
 

Проверила на примере. Все правильно. Раньше думала, что только числа сравниваются, а строки только по длине.

  Ответить  
 
 автор: Trianon   (15.10.2009 в 12:23)   письмо автору
 
   для: Лена   (15.10.2009 в 10:48)
 

как строки сравнивают. if($s1 <= $s_ip && $s_ip <= $s2)
Точку с запятой - спасибо - поправил.

  Ответить  
 
 автор: Лена   (15.10.2009 в 10:48)   письмо автору
 
   для: Trianon   (14.10.2009 в 23:39)
 

При конвертировании bin2hex получаем строку. Как потом эти строки на больше/меньше сравнивать?
У вас там кстати точка с запятой не там стоит.

  Ответить  
 
 автор: Trianon   (15.10.2009 в 00:23)   письмо автору
 
   для: Nevi   (15.10.2009 в 00:01)
 

а если встанет задача работать с диапазонами адресов, которые не являются сетями класса C?

  Ответить  
 
 автор: Nevi   (15.10.2009 в 00:04)   письмо автору
 
   для: Diplex   (14.10.2009 в 23:28)
 

регулярными выражениями не хотелось бы принципиально
1. долгие
2. возможны изменения от версии к версии

  Ответить  
 
 автор: Nevi   (15.10.2009 в 00:01)   письмо автору
 
   для: Trianon   (14.10.2009 в 23:39)
 

спасибо за ответ! Я обязательно изучу то что вы написали, может даже пойму, т.к. я в первые вижу все представленные функции

а я тем временем все сделал в 3 строки


$dlina = strlen($rip)-strlen(strrchr($rip, '.'));
$rip = substr($rip, 0, $dlina); // тут стал обрезанный ip ex 66.188.77

а потом тупо
задаем сколько угодно вских массиов и делаем

if (in_array($rip, $ipaa))
{ делаем aa }
elseif (in_array($rip, $ipbb))
{ делаем bb }
elseif (in_array($rip, $ipcc))
{ делаем cc }
else
{ нифига нет такого}

скажите - чем плох этот способ?

  Ответить  
 
 автор: Trianon   (14.10.2009 в 23:39)   письмо автору
 
   для: Nevi   (14.10.2009 в 22:28)
 

Не нужно оно Вам...

function ipv4flat($addr) { return bin2hex(pack('l', ip2long($addr))); }

После такого преобразования адреса можно будет сравнивать на больше/меньше/равно.

  Ответить  
 
 автор: Diplex   (14.10.2009 в 23:28)   письмо автору
 
   для: Nevi   (14.10.2009 в 22:28)
 

способов много, можно так:


<?
preg_match_all
("/(\w+)\.(\w+)\.(\w+)\.(\w+)/""123.234.163.121"$out); 
echo 
$out[1][0].'.'.$out[2][0].'.'.$out[3][0];
?>

  Ответить  
 
 автор: Nevi   (14.10.2009 в 22:28)   письмо автору
 
   для: Trianon   (14.10.2009 в 21:48)
 

а подскажите стандартную функцию php чтобы выводило все по последнюю точку[символ]?

123.234.163.121

чтобы вывело

123.234.163 отрезав .121

я нашел чтото типа strrchr которая только показывает .121 ...а мне надо наоборот чтобы показывало все до этого...

наверняка есть функция - ведь есть же .strrchr

  Ответить  
 
 автор: Trianon   (14.10.2009 в 21:48)   письмо автору
 
   для: Nevi   (14.10.2009 в 21:36)
 

попробуйте - увидите.

  Ответить  

Сообщения:  [1-10]   [11-19] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

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