Перейти к контенту

Только одна регистрация с одного IP


Рекомендуемые сообщения

Register.php

 

Ищем:

//+--------------------------------------------
	//| Is this email addy taken?
	//+--------------------------------------------

	if (! $ibforums->vars['allow_dup_email'] )
	{
		$DB->query("SELECT id FROM ibf_members WHERE email='".$in_email."'");
		$email_check = $DB->fetch_row();
		if ($email_check['id'])
		{
			$this->show_reg_form('err_email_exists');
			return;
		}
	}

ниже

		//+--------------------------------------------
	//| Разрешить региться много раз с одного IP?
	//+--------------------------------------------

	$DB->query("SELECT id FROM ibf_members WHERE ip_address='".$ibforums->input['IP_ADDRESS']."'");
	$ip_check = $DB->fetch_row();
	if ($ip_check['id'])
	{
		$this->show_reg_form('err_no_multi_ips');
		return;
	}

 

lang_register.php

'err_no_multi_ips'	=>	"любой текст",

 

а в чём конкретно проблема?

:D В том, что человек хочет запретить региться одному челу 100 раз ;)

Ссылка на комментарий
Поделиться на других сайтах

Ещё одним запросом не прикольно.

Лучше поставить на ip_address UNIQUE KEY и анализировать код ошибки при добавлении аккаунта..

Ссылка на комментарий
Поделиться на других сайтах

Song, не понял, если честно.

 

Jax, я почему не ставлю, потому что пока нет надобности, придется все назад возвращать.

Ссылка на комментарий
Поделиться на других сайтах

Cеть не инфолайн случаем ?

В приват с такими вопросами.

Jax, я почему не ставлю, потому что пока нет надобности, придется все назад возвращать.

хех, если нет надобности, зачем просил людей думать? :D

Там возвращать нечего, один раз скопировал/вставил и вернул все назад.

Ссылка на комментарий
Поделиться на других сайтах

Хорошо на днях обязательно попробую. Спасибо за мод!

 

Просто щас дел полно, постараюсь поскорее...

Ссылка на комментарий
Поделиться на других сайтах

Firewalll, Song имеет в виду поставить в базе на поле с ip-адресом уникальный ключ. т.е. если будет попытка добавления уже существующего в базе ip-адреса, то будет выведена определенная ошибка. а ее уже и надо анализировать.
Ссылка на комментарий
Поделиться на других сайтах

Ну чтобы с анализом не парится, можно при реге просто кидать IP в бан лист, думаю одним запросом при реге - не страшно.
Ссылка на комментарий
Поделиться на других сайтах

Ну чтобы с анализом не парится

Да там вообщем-то 3 строчки добавить.....

 

Ну чтобы с анализом не парится, можно при реге просто кидать IP в бан лист, думаю одним запросом при реге - не страшно.

conf_global.php сильно расти будет.

Ссылка на комментарий
Поделиться на других сайтах

2Song, я не любитель бани - незнал, что он в файлик пишется... Теперь знаю. Раз в файлик - тогда в чём проблема просто при регистрацци добавить пару строк?

 

2Felix, да ты просто запрети да и только - обычно работает..

Ссылка на комментарий
Поделиться на других сайтах

2Song, я не любитель бани - незнал, что он в файлик пишется... Теперь знаю. Раз в файлик - тогда в чём проблема просто при регистрацци добавить пару строк?

честно говоря, не понял.

Строк для чего? Для записи в базу?

 

Млин ну чтоже вы придумываете велосипед-то, а? :D

вот строчка из Register.php:

	//+--------------------------------------------
//| Insert into the DB
//+--------------------------------------------

$DB->query("INSERT INTO ibf_members (" .$db_string['FIELD_NAMES']. ") VALUES (". $db_string['FIELD_VALUES'] .")");

её нужно заменить на:

 

 

	$DB->return_die = 1;
//+--------------------------------------------
//| Insert into the DB
//+--------------------------------------------

$DB->query("INSERT INTO ibf_members (" .$db_string['FIELD_NAMES']. ") VALUES (". $db_string['FIELD_VALUES'] .")");

if ( $DB->error )
{
	$std->Error( array( LEVEL => 1, MSG => здесь нужная вам языковая константа) );
}

$DB->return_die = 0;

 

не надо никаких строчек, запросов и прочей херни.

Ссылка на комментарий
Поделиться на других сайтах

Эм,т.к в пхп не силен,то задам такой вопросик,а если в Register.php такая штука -

//-----------------------------------------
		// Insert into the DB
		//-----------------------------------------

		$DB->do_insert( 'reg_antispam', array (
											   'regid'	  => $regid,
											   'regcode'	=> $reg_code,
											   'ip_address' => $ibforums->input['IP_ADDRESS'],
											   'ctime'	  => time(),
								   )	   );
	}

	$this->page_title = $ibforums->lang['lost_pass_form'];

	$this->nav		= array( $ibforums->lang['lost_pass_form'] );

	if ($errors != "")
	{
		$this->output .= $this->html->errors( $ibforums->lang[$errors]);
	}

	$this->output	.= $this->html->lost_pass_form($regid);

	if ($ibforums->vars['bot_antispam'] == 'gd')
	{
		$this->output = str_replace( "<!--{REG.ANTISPAM}-->", $this->html->bot_antispam_gd( $regid ), $this->output );
	}
	else if ($ibforums->vars['bot_antispam'] == 'gif')
	{
		$this->output = str_replace( "<!--{REG.ANTISPAM}-->", $this->html->bot_antispam( $regid ), $this->output );
	}
}

 

Что здесь менять,чтобы добиться такого же результата?

Ссылка на комментарий
Поделиться на других сайтах

Здесь - ничего.

 

Ищете запрос вида insert into ibf_members, а ниже затолкать:

	if ( $DB->error )
{
	$std->Error( array( LEVEL => 1, MSG => здесь нужная вам языковая константа) );
}
$DB->return_die = 0;

и выше тоже затолкать:

$DB->return_die = 1;

Ссылка на комментарий
Поделиться на других сайтах

  • 2 недели спустя...

А если нужно разрешить регистрацию только с определённых ip? Принцип понятен, но не силён в массивах.

		//-----------------------------------------
	// Allow registration only for ip`s below
	//-----------------------------------------

	$LocalNet = array(ip2long("62.33.12.0"),ip2long("62.33.12.255"),
		ip2long("62.33.13.0"),ip2long("62.33.13.255"),
		ip2long("83.234.64.0"),ip2long("83.234.64.255"));

Как теперь проверить, встречается ли в массиве $LocalNet значение переменной $_SERVER["REMOTE_ADDR"] ?

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

Ссылка на комментарий
Поделиться на других сайтах

Ясно. ну и нафига он? Массив строк использовать мешает религия ?
Ссылка на комментарий
Поделиться на других сайтах

Ясно. ну и нафига он? Массив строк использовать мешает религия ?

Как проверить всю подсеть массивом строк я не знаю.

В общем родил такую штуку:

 

/sources/register.php

 

находим

		//-----------------------------------------
	// Is this email addy taken? CONVERGE THIS??
	//-----------------------------------------

	if ( $ibforums->converge->converge_check_for_member_by_email( $in_email ) == TRUE )
	{
		$this->show_reg_form('err_email_exists');
		return;
	}

 

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

		//-----------------------------------------
	// Allow registration only for ip`s below
	//-----------------------------------------
	$LocalNet = array(ip2long("62.33.12.0"),
			ip2long("62.33.13.0"),
			ip2long("83.234.64.0"),
	ip2long("85.249.59.0"));


	$rem_ip = ip2long($_SERVER["REMOTE_ADDR"]);
	$i = 0;
	$last_id = count($LocalNet)-1; //id последнего элемента $LocalNet
	do {
	$dif = $rem_ip - $LocalNet[$i];
	if ($dif < 255 and $dif > 0) break;
	}
	while ($i++ < $last_id);
	if ($i == $last_id+1)
	{
		$this->show_reg_form('err_only_our_ips');
		return;
	}

 

В /lang/ru/lang_register.php добавляем

$lang['err_only_our_ips']  = "Регистрация с вашего ip-адреса запрещена.";

 

В /lang/en/lang_register.php

'err_only_our_ips'	=>	"Registration from your ip-address denied.",

 

 

Немного путано, но работает ;) Минусы - можем задать подсеть только 255.255.255.0.

Если б ещё массив $LocalNet через админку задавать....эх, мячты, мячты :D

Ссылка на комментарий
Поделиться на других сайтах

Как проверить всю подсеть массивом строк я не знаю.

циклом + регвыр

Ссылка на комментарий
Поделиться на других сайтах

Присоединиться к обсуждению

Вы можете ответить сейчас, а зарегистрироваться позже. Если у вас уже есть аккаунт, войдите, чтобы ответить от своего имени.

Гость
Ответить в этой теме...

×   Вы вставили отформатированный текст.   Удалить форматирование

  Допустимо не более 75 смайлов.

×   Ваша ссылка была автоматически заменена на медиа-контент.   Отображать как ссылку

×   Ваши публикации восстановлены.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

Зарузка...
×
×
  • Создать...

Важная информация

Находясь на нашем сайте, вы соглашаетесь на использование файлов cookie, а также с нашим положением о конфиденциальности Политика конфиденциальности и пользовательским соглашением Условия использования.