ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2
Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей. Здесь обсуждаются безопасность, программирование, технологии и многое другое. Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
Вернуться   Форум АНТИЧАТ > Программирование > PHP, PERL, MySQL, JavaScript
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

Php, сравнение Ip (вопрос)
  #1  
Старый 05.03.2007, 15:51
Аватар для Химический_Ёжик
Химический_Ёжик
Новичок
Регистрация: 09.01.2007
Сообщений: 9
Провел на форуме:
28497

Репутация: 21
Question Php, сравнение Ip (вопрос)

Здраствуйте...
Подскажите пожалуйста как можно проверить принадлежит ли ip адрес заданному диапазону?

PHP код:
<?
$s
="$REMOTE_ADDR";
if (?????) {
echo 
"yes!"
}
else {
echo 
"No!";
?>
Если криво задал вопрос, скажите- перефразирую )
сорри за глупые вопросы, умные пока придумать не могу...

Последний раз редактировалось Химический_Ёжик; 05.03.2007 в 15:54..
 
Ответить с цитированием

  #2  
Старый 05.03.2007, 16:03
Аватар для GreenBear
GreenBear
наркоман с медалью
Регистрация: 07.05.2005
Сообщений: 3,704
Провел на форуме:
19975136

Репутация: 4536


Отправить сообщение для GreenBear с помощью ICQ
По умолчанию

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'
 
Ответить с цитированием

  #3  
Старый 05.03.2007, 16:04
Аватар для KEZ
KEZ
Banned
Регистрация: 18.05.2005
Сообщений: 1,981
Провел на форуме:
1941233

Репутация: 2726


По умолчанию

пусть $d1 и $d2 - диапазоны в виде "x.x.x.x" (например 1.2.3.4 - 1.2.3.100)
переводи их в числа (4-байтные как бы) чтобы небыло никаких точек. просто числа.
далее переводи в такое же число заданый адрес, и если
конец_диапазона >= заданый_адрес >= начало_диапазона
то yes, иначе нет.


UPD
поскольку коллега Green_Bear успел написать ответ быстрее меня, читай его код (правда я неуверен что он правильный)

Последний раз редактировалось KEZ; 05.03.2007 в 16:08..
 
Ответить с цитированием

  #4  
Старый 05.03.2007, 16:10
Аватар для KEZ
KEZ
Banned
Регистрация: 18.05.2005
Сообщений: 1,981
Провел на форуме:
1941233

Репутация: 2726


По умолчанию

надо было уточнить как задан диапазон
уточняй сразу что нужно и пиши пример так:
PHP код:
<?
$d1 
"1.2.3.4"$d2 "1.2.3.10"# или по другому, как хотел то?

$s=$_SERVER["REMOTE_ADDR"]; # так правильнее
if (?????)
{
echo 
"yes!"
}
else
{
echo 
"No!";
# забыл "}"
?>
 
Ответить с цитированием

  #5  
Старый 05.03.2007, 16:13
Аватар для GreenBear
GreenBear
наркоман с медалью
Регистрация: 07.05.2005
Сообщений: 3,704
Провел на форуме:
19975136

Репутация: 4536


Отправить сообщение для GreenBear с помощью ICQ
По умолчанию

кез, а чо там не правильного? поставить * за место цифры =)) например 127.0.*.*
и все =\
правда я не учел, что твое... например 127.0.0.1 - 127.0.0.15 =\
но это уже надо более точно узнать у автора топика, что ему конкретно надо.
 
Ответить с цитированием

  #6  
Старый 05.03.2007, 16:26
Аватар для TaNkist
TaNkist
Участник форума
Регистрация: 06.04.2006
Сообщений: 257
Провел на форуме:
367179

Репутация: 76
По умолчанию

PHP код:
$text="$REMOTE_ADDR";
$text=strrev($text);
$last =strchr($text".");
$last =strrev($last);
if (
$last=="127.0.0.") {
echo 
"yes!"
}
else {
echo 
"No!"
 
Ответить с цитированием

  #7  
Старый 05.03.2007, 18:31
Аватар для ZaCo
ZaCo
Banned
Регистрация: 20.06.2005
Сообщений: 880
Провел на форуме:
4610226

Репутация: 1332


По умолчанию

2GreenBear твой код неправильный. сравнивать символы на равенство?)
2TaNkist это вообще что?
2BlackLogic а это что?
--
вообще советую перечитывать свои сообщения перед постом.
ЗЫ сегодня победил кез.
 
Ответить с цитированием

  #8  
Старый 05.03.2007, 18:34
Аватар для GreenBear
GreenBear
наркоман с медалью
Регистрация: 07.05.2005
Сообщений: 3,704
Провел на форуме:
19975136

Репутация: 4536


Отправить сообщение для GreenBear с помощью ICQ
По умолчанию

покажи правильное.
 
Ответить с цитированием

  #9  
Старый 05.03.2007, 18:39
Аватар для ZaCo
ZaCo
Banned
Регистрация: 20.06.2005
Сообщений: 880
Провел на форуме:
4610226

Репутация: 1332


По умолчанию

тк в пхп тип Integer по-умолчанию знаковый и ip2long может вернуть отрицательное значение, то делаем так:
Цитата:
<?
$first="0.0.0.0";
$last="255.255.255.254";
$check="192.0.34.166";
//
$check_d=sprintf("%u",ip2long($check));
$first_d=sprintf("%u",ip2long($first));
$last_d=sprintf("%u",ip2long($last));
//
if( ($check_d>=$first_d) && ($check_d<=$last_d) )
{
//xek
echo 'xek';
}
?>
самому не нравится...

Последний раз редактировалось ZaCo; 05.03.2007 в 19:16..
 
Ответить с цитированием

  #10  
Старый 05.03.2007, 18:41
Аватар для GreenBear
GreenBear
наркоман с медалью
Регистрация: 07.05.2005
Сообщений: 3,704
Провел на форуме:
19975136

Репутация: 4536


Отправить сообщение для GreenBear с помощью ICQ
По умолчанию

ну у каждой задачи есть множесвто решений. так что если ты делаешь по другому, то не значит что у других не правильно
другое дело, что я вопрос не правильно понял =). .. как уже написал выше.
 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Books PHP FRAGNATIC PHP, PERL, MySQL, JavaScript 186 21.02.2010 02:41
Books PSalm69 Избранное 248 27.10.2009 04:52
На PHP, как на "Новые ворота"... Mertvii-Listopad Чужие Статьи 7 18.09.2006 12:42
Безопасность в Php, Часть Iii k00p3r Чужие Статьи 0 11.07.2005 19:02
Защищаем Php. Шаг за шагом. k00p3r Чужие Статьи 0 13.06.2005 11:31



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ