
Вы знаете, что в последнее время участились спам атаки и некоторые программы могут обходить, даже такой казалось бы не проходимый модуль для DLE Вопрос-Ответы, который обходят благодаря частому использованию на многих ресурсах одних и тех же ответов и вопросов. Представляем на «все для дле» из раздела DLE хаки добавлении вопрос-ответ с картинкой в стандартный функционал движка модуля системы Вопрос-Ответ. Что сильно, усложнит регистрацию ботов и т.д.
Какого особенность и отличие от стандартного варианта? Первое, что стоить ответить простата установки и минимальность правок стандартных файлов dle. Вторая особенность, возможность вставлять картинку через специальный тег, который понимает как локально-добавленные картинки так и картинки по ссылке с других ресурсов.
Установка Хак - модуль Вопрос-Ответ с картинкой для DLE
1. Файл: /engine/modules/functions.php
Найти:
if( ! defined( 'DATALIFEENGINE' ) ) {
die( "Hacking attempt!" );
}
Добавить ниже:
function question_img($i) {
$img = ( substr($i[1], 0, 4)=="http" ) ? $i[1] : "/uploads/question/{$i[1]}";
return "<br><img src="{$img}" />";
}
2. Файл: /engine/modules/register.php
Найти:
$tpl->set( '{question}', htmlspecialchars( stripslashes( $question['question'] ), ENT_QUOTES ) );
или:
$tpl->set( '{question}', htmlspecialchars( stripslashes( $question['question'] ), ENT_QUOTES, $config['charset'] ) );
Заменить на:
$question['question'] = preg_replace_callback( "#[img=(.+?)]#is", "question_img", $question['question'] );
$tpl->set( '{question}', stripslashes( $question['question'] ) );
3. Файл: /engine/modules/show.full.php
Найти:
$tpl->set( '{question}', "<span id="dle-question">".htmlspecialchars( stripslashes( $question['question'] ), ENT_QUOTES )."</span>" );
или:
$tpl->set( '{question}', "<span id="dle-question">".htmlspecialchars( stripslashes( $question['question'] ), ENT_QUOTES, $config['charset'] )."</span>" );
Заменить на:
$question['question'] = preg_replace_callback( "#[img=(.+?)]#is", "question_img", $question['question'] );
$tpl->set( '{question}', "<span id="dle-question">".stripslashes( $question['question'] )."</span>" );
4. Создать каталог: /uploads/question
Поместить в него картинки, например: 1.jpg
Пример вопроса:
Что изображено на картинке? [img=1.jpg]
В engine/modules/register.php
$tpl->set( '{question}', htmlspecialchars( stripslashes( $question['question'] ), ENT_QUOTES ) );
Заменить на:
$tpl->set( '{question}', stripslashes( $question['question'] ) );
и в engine/inc/question.php 2 раза заменить
$question = $db->safesql( strip_tags($_POST['question']) );
на
$question = $db->safesql( strip_tags($_POST['question'], '<img>') );
В дополнительном вопросе теперь можно использовать тег
<img />
...Что на картинке, и.т.п.
ЗЫ!
Когда уже в комментах кнопка кода появится!
Автор: MSW 0-web ru
Версия DLE: 9.4 и выше
Ознакомится с DLE хак - модуль Вопрос-Ответ с картинкой установка в текстовом файле