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

[2.3.x]Защита от ботов: вопросы при регистрации v3


Arhar

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

А, точно. Это как раз к моему вопросу выше:

Но если я не ввожу ответа на вопрос при создании темы, то мне пишет просто "Обнаружена ошибка", без пояснений, что я не ответил на вопрос. Так и должно быть?
=)

 

Так а questions.php надо было заменять? Туда вносились изменения со времён 2 версии мода?

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

  • Ответы 823
  • Создана
  • Последний ответ

Лучшие авторы в этой теме

Подскажите пожалуста, у меня следующая проблемка:

 

Parse error: syntax error, unexpected T_ELSE in /home/wmmobi/public_html/sources/action_public/register.php on line 1314

 

 

По этой строке у меня прописано следующее:

 

//-----------------------------------------

// Custom profile fields stuff

//-----------------------------------------

 

$required_output = "";

$optional_output = "";

 

require_once( ROOT_PATH.'sources/classes/class_custom_fields.php' );

$fields = new custom_fields( $this->ipsclass->DB );

 

$fields->cache_data = $this->ipsclass->cache['profilefields'];

 

$fields->init_data();

$fields->parse_to_register();

 

foreach( $fields->out_fields as $id => $data )

 

Ничего не понимаю

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

Ещё по 10 строк вверх и вниз.
Ссылка на комментарий
Поделиться на других сайтах

Ещё по 10 строк вверх и вниз.

 

 

//-----------------------------------------

// Clean out anti-spam stuffy

//-----------------------------------------

 

if ($this->ipsclass->vars['bot_antispam'])

{

// Set a new ID for this reg request...

 

$regid = md5( uniqid(microtime()) );

 

// Set a new 6 character numerical string

 

mt_srand ((double) microtime() * 1000000);

 

$reg_code = mt_rand(100000,999999);

 

// Insert into the DB

 

$this->ipsclass->DB->do_insert( 'reg_antispam', array (

'regid' => $regid,

'regcode' => $reg_code,

'ip_address' => $this->ipsclass->input['IP_ADDRESS'],

'ctime' => time(),

) );

}

//-----------------------------------------

// Custom profile fields stuff

//-----------------------------------------

 

$required_output = "";

$optional_output = "";

 

require_once( ROOT_PATH.'sources/classes/class_custom_fields.php' );

$fields = new custom_fields( $this->ipsclass->DB );

 

$fields->cache_data = $this->ipsclass->cache['profilefields'];

 

$fields->init_data();

$fields->parse_to_register();

 

foreach( $fields->out_fields as $id => $data )

{

if ( $fields->cache_data[ $id ]['pf_not_null'] == 1 )

{

$ftype = 'required_output';

}

else

{

$ftype = 'optional_output';

}

 

if ( $fields->cache_data[ $id ]['pf_type'] == 'drop' )

{

$form_element = $this->ipsclass->compiled_templates['skin_register']->field_dropdown( 'field_'.$id, $data );

}

else if ( $fields->cache_data[ $id ]['pf_type'] == 'area' )

{

$data = $this->ipsclass->input['field_'.$id] ? $this->ipsclass->input['field_'.$id] : $data;

$form_element = $this->ipsclass->compiled_templates['skin_register']->field_textarea( 'field_'.$id, $data );

}

else

{

$data = $this->ipsclass->input['field_'.$id] ? $this->ipsclass->input['field_'.$id] : $data;

$form_element = $this->ipsclass->compiled_templates['skin_register']->field_textinput( 'field_'.$id, $data );

}

 

${$ftype} .= $this->ipsclass->compiled_templates['skin_register']->field_entry( $fields->field_names[ $id ], $fields->field_desc[ $id ], $form_element );

}

 

$this->page_title = $this->ipsclass->lang['registration_form'];

$this->nav = array( $this->ipsclass->lang['registration_form'] );

 

//-----------------------------------------

// ERROR CHECK

//-----------------------------------------

 

if ( is_array( $form_errors['general'] ) AND count( $form_errors['general'] ) )

{

$this->output .= $this->ipsclass->compiled_templates['skin_register']->errors( implode( "<br />", $form_errors['general'] ) );

}

 

 

Ничего никак понять не могу уже все кажется перепробывал.....

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

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

Parse error: syntax error, unexpected T_ELSE in /home/wmmobi/public_html/sources/action_public/register.php on line 1314

 

а что вообще из себя эта ошибка может представлять, спасибо.

 

//-----------------------------------------
// Clean out anti-spam stuffy
//-----------------------------------------

if ($this->ipsclass->vars['bot_antispam'])
{
// Set a new ID for this reg request...

$regid = md5( uniqid(microtime()) );

// Set a new 6 character numerical string

mt_srand ((double) microtime() * 1000000);

$reg_code = mt_rand(100000,999999);

// Insert into the DB

$this->ipsclass->DB->do_insert( 'reg_antispam', array (
'regid' => $regid,
'regcode' => $reg_code,
'ip_address' => $this->ipsclass->input['IP_ADDRESS'],
'ctime' => time(),
) );
}
//-----------------------------------------
// Custom profile fields stuff
//-----------------------------------------

$required_output = "";
$optional_output = "";

require_once( ROOT_PATH.'sources/classes/class_custom_fields.php' );
$fields = new custom_fields( $this->ipsclass->DB );

$fields->cache_data = $this->ipsclass->cache['profilefields'];

$fields->init_data();
$fields->parse_to_register();

foreach( $fields->out_fields as $id => $data )
{
if ( $fields->cache_data[ $id ]['pf_not_null'] == 1 )
{
$ftype = 'required_output';
}
else
{
$ftype = 'optional_output';
}

if ( $fields->cache_data[ $id ]['pf_type'] == 'drop' )
{
$form_element = $this->ipsclass->compiled_templates['skin_register']->field_dropdown( 'field_'.$id, $data );
}
else if ( $fields->cache_data[ $id ]['pf_type'] == 'area' )
{
$data = $this->ipsclass->input['field_'.$id] ? $this->ipsclass->input['field_'.$id] : $data;
$form_element = $this->ipsclass->compiled_templates['skin_register']->field_textarea( 'field_'.$id, $data );
}
else
{
$data = $this->ipsclass->input['field_'.$id] ? $this->ipsclass->input['field_'.$id] : $data;
$form_element = $this->ipsclass->compiled_templates['skin_register']->field_textinput( 'field_'.$id, $data );
}

${$ftype} .= $this->ipsclass->compiled_templates['skin_register']->field_entry( $fields->field_names[ $id ], $fields->field_desc[ $id ], $form_element );
}

$this->page_title = $this->ipsclass->lang['registration_form'];
$this->nav = array( $this->ipsclass->lang['registration_form'] );

//-----------------------------------------
// ERROR CHECK
//-----------------------------------------

if ( is_array( $form_errors['general'] ) AND count( $form_errors['general'] ) )
{
$this->output .= $this->ipsclass->compiled_templates['skin_register']->errors( implode( "<br />", $form_errors['general'] ) );
}

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

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

Вообщем что за байдистика с этим модом, я его установил вроде как, НО я не понял

что значит

 

12. создаем в skin_topics новый фрагмент

Имя - question_row

Входящие переменные - $row Содержание:

<div class="borderwrap">
<table cellspacing="0" class='ipbtable'>
<tr>
 <td class="maintitle" colspan="2">  Защитный вопрос</td>
</tr>
<tr>
 <td align="center" width="100%" colspan="2"><strong>Для публикации сообщения необходимо ответить на следующий вопрос:</strong></td>
</tr>
<tr>
<td width="80%">{$row['question']}</td>
<td width="20%" align="center">{$row['answer_input']}</td>
</tr>
</table>
</div><br />

 

Мне вот эта вся хрень короче впорола полностью всю борду, вот что мне хотелось бы знать 1)каким... создавать этот фрагмент?Куда его вписывать? до? после? перед?

а ещё лучше былобы готовое сюда залить

Скажу сразу, что у меня IPB 2.2.0

Просто лучше склепать этот фрагмент чтобы показать мне и скажите куда его вписать

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

ля начала изучи вот это http://wiki.iblink.ru/documentation/acp/lo...s_and_templates

, прежде чем моды ставить!

мне что, еще видео с экрана сделать может

 

все всегда хотят все готовое

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

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

У меня проблема с этим модом, при регистрации выводится такое сообщение:

Fatal error: Call to undefined function: generate_qinputf() in /home/lflaru/lflaru/www/forum/sources/action_public/register.php on line 1292

 

Вот мой код:

//-----------------------------------------

// Replace elements

//-----------------------------------------

 

//antispam.question

if ($this->ipsclass->vars['questions_num'])

{

 

$this->ipsclass->DB->query("SELECT id,question FROM ibf_questions ORDER BY RAND() LIMIT 1");

$row = $this->ipsclass->DB->fetch_row();

$qinputf = $this->ipsclass->generate_qinputf();

$row['answer_input'] = "<input type=\"text\" maxlength=\"60\" size=\"30\" name=\"".$this->prefix.$qinputf."\" />";

 

$question_mod = $this->ipsclass->compiled_templates['skin_register']->question_mod( $row );

 

$this->ipsclass->DB->query("UPDATE ibf_questions SET qinputf='".$qinputf."' WHERE id=".$row['id']);

 

$this->output = str_replace( "<!--{ANTISPAM.QUESTION}-->", $question_mod , $this->output );

}

//antispam.question

Строка 1292 выделена жирным

 

В чем проблема, объясните, плз?

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

Не туда в ipsclass.php функцию добавили, видимо после } а не перед.
Ссылка на комментарий
Поделиться на других сайтах

Не туда в ipsclass.php функцию добавили, видимо после } а не перед.

Спасибо. Строчка эта исчезла и работает регистрация.

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

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

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

Я даже знаю почему.

Потому что надо читать инструкцию внимательно.

ВНИМАТЕЛЬНО, ибо там написано, что проверку надо добавлять в функции create_account

 

Иди учи программирование, потом непосредственно язык пхп, а потом делай поиск в файле не по строчке, а по БЛОКУ

		//-----------------------------------------
	// CHECK 2: Any errors (duplicate names, etc)?
	//-----------------------------------------

	if ( count( $form_errors ) )
	{
		$this->show_reg_form( $form_errors );
		return;
	}

потому что в файле register.php

2 раза есть строчка

CHECK 2: Any errors (duplicate names, etc)?

 

такую ошибку делают ну процентов 10 устанавливающих

 

ну скачайте вы себе Дримвьювер, он может искать по блокам

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

Спасибо большое! Все работает! А Вы не подскажете, как отключить при регистрации ввод кода безопасности, чтобы нужно было отвечать только на вопросы?
Ссылка на комментарий
Поделиться на других сайтах

Спасибо большое! Все работает! А Вы не подскажете, как отключить при регистрации ввод кода безопасности, чтобы нужно было отвечать только на вопросы?

Настройки - Безопасность и конфиденциальность

 

а у меня, в свою очередь, мод не хочет вставать. я так понимаю дело в этом

Ошибка SQL

BLOB/TEXT column 'question' can't have a default value

и таблица не создается...

:D

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

Спасибо большое! Все работает! А Вы не подскажете, как отключить при регистрации ввод кода безопасности, чтобы нужно было отвечать только на вопросы?

Настройки - Безопасность и конфиденциальность

Все же там я этого не нашел, к сожалению

 

Кстати, на форуме пропала возможность Быстрого Ответа. Могут ли быть эти проблемы связаны с установкой этого мода?

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

2 Студент_52: Имхо, если вы не смогли найти первый пункт, то лучше с админством завязывать... Или немного отложить.

post-36662-1203024841_thumb.png

 

P.S. Если кто напишет на высветившийся уин — буду банить в обоих.

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

2 Студент_52: Имхо, если вы не смогли найти первый пункт, то лучше с админством завязывать... Или немного отложить.

post-36662-1203024841_thumb.png

 

P.S. Если кто напишет на высветившийся уин — буду банить в обоих.

Спасибо, за совет! :D Но не могу. На меня сейчас все надежда на форуме. ;)

Посмотрел ваш скрин, но, к сожалению, этого нет в настройках "Безопасности форума"

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

Попробовала установить на 2.3.4 Проблема такая: исчезла форма быстрого ответа.

Так как все файлы перед редактированием сохранила- то заменила их на прежние, удалила новые фрагменты шаблонов и отредактировала там, где требовалось заменить или добавить куски кода.

Кнопка быстрого ответа появилась, но самой формы для ввода сообщений так и нет.

Может быть проблема в запросе, который из админки делается. Я в этом ничего не понимаю. Выполнила запрос и все, а отменить надо как-то потом, после удаления мода? Потому что уже не знаю на что и думать, все следы мода удалены, а быстрый ответ толком так и не работает

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

Ну я может и безнадежная, конечно)))) Но мне не надо видео, хотя большое спасибо за такое быстрое реагирование) Разобралась, в смысле появился быстрый ответ, но почему-то с этим модом они друг друга не понимают)), может быть потому что версия не 2.1-2.2, а 2.3. Удалила((. Изменено пользователем Лана
Ссылка на комментарий
Поделиться на других сайтах


×
×
  • Создать...

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

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