Здесь скоро опять что то будет...
Your fucking browser doesn't support JavaScript, so you can't post here.
Loading
Объявления
12.08.2009, 14:15
#1
Простоузер
Регистрация: 24.05.2007
Сообщений: 17
Поблагодарил(-а): 17
Поблагодарили 3 раз(а) в 2 сообщениях
Репутация: Новичок (3 )
вход пользователя с определённого ip
подскажите, как реализовать вход пользователя с определённым id только с определённого ip?
12.08.2009, 15:11
#2
Гуру
Регистрация: 26.02.2008
Сообщений: 983
Версия vB: 3.8.1
Поблагодарил(-а): 30
Поблагодарили 902 раз(а) в 534 сообщениях
Репутация: Гуру (944 )
на хук 'global_setup_complete' вешай модуль типа такого
PHP код:
if ( $vbulletin -> userinfo [ 'userid' ] == XXX AND ALT_IP != 'YYY' ) print_no_permission ();
здесь вместо XXX вписывай id пользователя, вместо YYY -- разрешенный для него ip-адрес.
12.08.2009, 15:27
#3
Эксперт
Регистрация: 20.12.2008
Адрес: C:\AppServ\www\
Сообщений: 1,566
Версия vB: 1.x.x
Поблагодарил(-а): 760
Поблагодарили 1,730 раз(а) в 497 сообщениях
Репутация: Эксперт (1740 )
Ghost , наверно так будет правельней
Цитата:
if ( $vbulletin -> userinfo [ 'userid' ] == XXX AND ALT_IP != 'YYY' ) { print_no_permission (); }
12.08.2009, 15:39
#4
k0t
Регистрация: 24.05.2005
Адрес: localhost
Сообщений: 16,881
Версия vB: 3.8.x
Пол:
Поблагодарил(-а): 1,766
Поблагодарили 11,322 раз(а) в 4,829 сообщениях
Репутация: Гуру (11526 )
без разницы =)
12.08.2009, 15:43
#5
Гуру
Регистрация: 26.02.2008
Сообщений: 983
Версия vB: 3.8.1
Поблагодарил(-а): 30
Поблагодарили 902 раз(а) в 534 сообщениях
Репутация: Гуру (944 )
GiveMeABreak , это можно было записать даже так:
PHP код:
( $vbulletin -> userinfo [ 'userid' ] != XXX OR ALT_IP == 'YYY' ) OR print_no_permission ();
что касается операторных скобок { и }, то их можно не использовать в ветвлениях и циклах в тех случаях, когда выполняться будет только один оператор. хотя лучше ставить -- для однообразия кода и упрощения его последующего чтения.
12.08.2009, 18:13
#6
Простоузер
Регистрация: 24.05.2007
Сообщений: 17
Поблагодарил(-а): 17
Поблагодарили 3 раз(а) в 2 сообщениях
Репутация: Новичок (3 )
спасибо ребят помогли=)
14.08.2009, 12:32
#7
Простоузер
Регистрация: 21.03.2006
Сообщений: 21
Версия vB: 3.8.x
Поблагодарил(-а): 28
Поблагодарили 1 раз в 1 сообщении
Репутация: Новичок (1 )
А как несколько ip разрешить + подсеть например.
14.08.2009, 12:46
#8
Гуру
Регистрация: 26.02.2008
Сообщений: 983
Версия vB: 3.8.1
Поблагодарил(-а): 30
Поблагодарили 902 раз(а) в 534 сообщениях
Репутация: Гуру (944 )
Цитата:
Сообщение от
FlyAway
как несколько ip разрешить
используй условие
PHP код:
in_array ( ALT_IP , array( 'IP1' , 'IP2' , 'IP3' ))
Цитата:
Сообщение от
FlyAway
подсеть
например, для подсети, адреса которой начинаются с '10.0.0'
PHP код:
preg_match ( '#^10\.0\.0\.(\d+)$#' , ALT_IP )
14.08.2009, 14:33
#9
Простоузер
Регистрация: 21.03.2006
Сообщений: 21
Версия vB: 3.8.x
Поблагодарил(-а): 28
Поблагодарили 1 раз в 1 сообщении
Репутация: Новичок (1 )
Так можно ж так зафигарить:
$usersId = array(1,2,3,4);
$ips = array('12.12.12.12', '12.12.12.13');
$subnets = array(
'#^10\.0\.0\.(\d+)$#',
'#^11\.0\.0\.(\d+)$#'
);
function in_subnet($ip, $subnet)
{
if (!sizeof($subnet))
{
return true;
}
$flag = false;
foreach ($subnet as $net)
{
if ( preg_match($net, $ip) )
{
$flag=true;
break;
}
}
return $flag;
}
//если id пользователя есть в списке
if ( in_array($vbulletin->userinfo['userid'], $usersId) )
{
//проверка на ips
$status = true;
if (sizeof($ips) )
{
$status = in_array( ALT_IP, $ips) ;
}
$status = $status && in_subnet(ALT_IP, $subnets);
if ($status==false)
{
//ошибка
print_no_permission();
}
}
Опции темы
Опции просмотра
Линейный вид
Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
Текущее время: 14:16 25.05.2012 . Часовой пояс GMT +4.