Перейти к публикации

MSW

новички
  • Публикации

    37
  • Зарегистрирован

  • Посещение

Сообщения, опубликованные пользователем MSW

  1. Предложение: добавить функцию открытия страницы после установки плагина, например, для дополнительной инструкции по установке модуля, внесению правок в шаблон, настройки параметров и т.д.

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

  2. 11 минут назад, celsoft сказал:

    система логирования ошибок в системе плагинов, просто выведет что поля уже существуют в таблице.

    Просто было бы логично и красивее, если бы такие моменты были учтены и происходили проверки в процессе установки плагина, а не выводились ошибки и потом раздавать всем пояснения, что это нормально, так задумано и реализовано в CMS :( что это не разработчик плагина виноват...

  3. 23 минуты назад, celsoft сказал:

    Зачем вам вообще эти проверки делать?

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

  4. Может в "шаблонизатор" запросов модульной системы добавить теги для добавления полей в таблицу, что то типа:

    [ADD_COLUMN_IF_NOTEXIST=таблица|поле|свойство]

    например:

    [ADD_COLUMN_IF_NOTEXIST={prefix}_files|field1|VARCHAR(40) NOT NULL]

    и уже на стороне пхп перед выполнением/компиляцией запроса делать проверку, по типу как в моём примере с пхп

    • Поддерживаю 1
  5. Проблемка при выполнении запросов в базу при установке плагина, при установке происходит добавление необходимых для модуля столбцов, раньше использовал проверку в пхп, на подобии:

        $f = $f_sql = array();
    
        $dbZ = $db->query("SHOW columns FROM " . PREFIX . "_files");
        while($row = $db->get_row($dbZ)) {
            $f[] = $row['Field'];
        }
        if( !in_array("field1", $f) ) {
            $f_sql[] = "ADD `field1` VARCHAR(40) NOT NULL";
        }
        if( !in_array("field2", $f) ) {
            $f_sql[] = "ADD `field2` VARCHAR(40) NOT NULL";
        }
    
        if( count($f_sql)>0 ) {
            $db->query("ALTER TABLE " . PREFIX . "_files " . implode(", ", $f_sql) );
    
        }

    теперь эти проверки требуется перенести на сторону плагиновой системы, то есть на сторону MySQL

    пока что приходит на ум такой вариант:

    DROP PROCEDURE IF EXISTS PluginAddColumn;
    DELIMITER $$
    CREATE PROCEDURE PluginAddColumn(IN dbName tinytext, IN tableName tinytext, IN fieldName tinytext, IN fieldDef text)
    BEGIN
        IF NOT EXISTS (SELECT * FROM information_schema.COLUMNS WHERE column_name=fieldName AND table_name=tableName AND table_schema=dbName)
        THEN
            set @ddl = CONCAT("ALTER TABLE `",tableName,"` ADD COLUMN `",fieldName,"` ",fieldDef);
            prepare stmt from @ddl;
            execute stmt;
        END IF;
    END $$
    DELIMITER ;
    
    call PluginAddColumn(Database(), '{prefix}_files', 'field1', "VARCHAR(40) NOT NULL");
    call PluginAddColumn(Database(), '{prefix}_files', 'field2', "VARCHAR(40) NOT NULL");
    
    DROP PROCEDURE PluginAddColumn;

    Кроме того что это выполняется медленее, ещё проблема:

    Цитата

     

    Ошибка: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'DELIMITER $$ CREATE PROCEDURE PluginAddColumn(IN dbName tinytext, IN tableName ' at line 1

    продолжить

     

    хотя в "скомпилированном" виде запрос из окна ошибки выполняется без ошибок

  6. 4 минуты назад, Sander1 сказал:

    Заменять больший кусок кода...

    про больший кусок кода подумал, но думал что вдруг есть предусмотренный вариант какой

    хотя конешно предусмотреть все случаи вариантов поиска и замены вряд ли удастся полностью и целиком

  7. 17 минут назад, celsoft сказал:

    Он там ошибочно

    ещё вопрос, если требуется заменить второе вхождение

    например: engine/classes/uploads/upload.class.php

    поиск:

    } else { $file_link = $config['http_home_url'] . "engine/skins/images/all_file.png";  $data_url = "#"; $file_play = ""; };

    первое вхождение из таблицы " . PREFIX . "_static_files, оно не нужно, а нужно второе из таблицы " . PREFIX . "_files

    как в этом случае быть? :)

     

  8. ещё в дополнение к файлу крона, проблема с файлом  /engine/inc/include/functions.inc.php

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

    @unlink( ROOT_DIR . "/uploads/files/" . $folder_prefix . $file );

    $db->query( "DELETE FROM " . PREFIX . "_files WHERE news_id = '{$id}'" );

    но:

    Файл engine/inc/include/functions.inc.php находится в списке защищенных файлов. Он не может быть модифицирован при помощи системы плагинов.

  9. только пришлось бы для последнего задания, по бекапу, тоже определить $cronmode, а то оно каждый раз выполнялось бы

    хотя при вписывании крон заданий для модулей, достаточно было бы заканчивать их die ("done"); или подобным, тогда бекап каждый раз не дёргался бы

  10. 20 минут назад, celsoft сказал:

    Свою функциальность вы должны добавлять в файлы, которые они подключают.

    вот с cron.php как раз проблема, в нём нет стороннего файла, в который можно внести свою функциональность при определённом запросе

    может в него подключить файл заглушку, в который уже через систему плагинов можно вписывать нужные $cronmode?

     

    например перед if($cronmode == "sitemap") {

    добавить инклуд:

    include_once (DLEPlugins::Check(ENGINE_DIR . '/modules/cron_plugins.php'));

     

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

  11. Вопросик:

    Нельзя вносить правки в плагине для файлов в engine/inc

    например для отслеживания добавляемых новостей, а они могут добавляться не только с сайта но и с админ панели

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

    так же как и файл cron.php в корне сайта - не сохраняются правки в плагине

    как с этим быть? есть идеи кроме старой системы внесения правок вручную?

  12. Набросал скрипт, который пересчитает комментарии у проблемных новостях:

    
    /*
    
    =====================================================
    
     Модуль: Comments Re-Count for DLE
    
     Версия: 1.0
    
    -----------------------------------------------------
    
     Автор: MSW
    
     Сайт:  http://0-web.ru/
    
    =====================================================
    
     Copyright (c) 2013 MSW
    
    =====================================================
    
    */
    
    
    @error_reporting ( E_ALL ^ E_WARNING ^ E_NOTICE );
    
    @ini_set ( 'display_errors', true );
    
    @ini_set ( 'html_errors', false );
    
    @ini_set ( 'error_reporting', E_ALL ^ E_WARNING ^ E_NOTICE );
    
    define ( 'DATALIFEENGINE', true );
    
    define ( 'ROOT_DIR', dirname ( __FILE__ ) );
    
    define ( 'ENGINE_DIR', ROOT_DIR . '/engine' );
    
    
    include ENGINE_DIR . '/data/config.php';
    
    require_once ENGINE_DIR . '/classes/mysql.php';
    
    require_once ENGINE_DIR . '/data/dbconfig.php';
    
    @header("Content-type: text/html; charset=".$config['charset']);
    
    
    $p = $db->query("SELECT id, comm_num FROM ".PREFIX."_post WHERE comm_num>0");
    
    while( $r = $db->get_row($p) ) {
    
    $z = $db->super_query("SELECT COUNT(id) as c FROM ".PREFIX."_comments WHERE post_id='{$r['id']}'");
    
    if($z['c'] != $r['comm_num']) {
    
    $db->query("UPDATE ".PREFIX."_post SET comm_num='{$z['c']}' WHERE id='{$r['id']}'");
    
    }
    
    }

    сохранить например в файл comm.php в корне сайта и запустить его через браузер

  13. такая же проблема, в гугл вебмастер насчитал 1328 таких страниц. что делать?

    Файл: /engine/classes/comments.class.php

    удалить:

    if ($config['seo_control'] AND $re_url) {

    $re_url = str_replace( $config['http_home_url'], "/", $re_url );

    header("HTTP/1.0 301 Moved Permanently");

    header("Location: {$re_url}");

    die("Redirect");

    }

  14. в сам запрос не добавлена выборка доп полей.

    и если в доп поле картинка то насколько понял этого уже не надо:

    preg_match_all( '#<img[^>]*ssrc=('|")(.*?)1.*?>#i',$shortnews,$total);

    foreach( $total[2] as $image ){

    пробуй эхать переменные, отлаживай)))

  15. для начала в запроса надо добавить поле хфилд

    потом в коде разбираешь их

    $xfieldsdata = xfieldsdataload($row['xfields']);
    и используешь
    $xfieldsdata['poster_v_krarkoi'][/code]

    где в коде твоём что вставить точно - не подскажу, уж сильно он тут не форматирован и с первого взгляда сложно разобрать))

  16. в списке найти нужную новость

    так вот проблема какраз в том что не возможно найти новость :) это только допобработку писать для их поиска и устранения :)

    надо в оптимизацию там же где пересчёт комментариев юзера и пересчёт комментариев новостей сделать :)

  17. страничка открывается так как сейчас выключен контроль, сейчас я его заново включил.

    изменения вносились только в виде добавления чпу ссылок типа:

    
    RewriteRule ^random.html$ /?do=random [L]
    
    RewriteRule ^afisha.html$ /?do=afisha [L]
    
    RewriteRule ^users.html$ /?do=users [L]
    других перенаправлений не внисились и думаю что этот файл в данном случае не участвует так как проблема чётко срабатывает только при включённом контроле ссылок. методом поиска по файлам 301 редиректа и установки die($re_url); выяснил что проблема в /engine/classes/comments.class.php в блоке:
    
    if ($config['seo_control']  AND $re_url) {
    
    
    $re_url = str_replace( $config['http_home_url'], "/", $re_url );
    
    header("HTTP/1.0 301 Moved Permanently");
    
    header("Location: {$re_url}");
    
    die("Redirect");
    
    
    }

    Причина это поведения - если в новости есть комментарии а в базе их по каким-то причинам нет то получаем циклическое перенаправление

    тоесть например в дле_пост есть у этой новости 2 коммента, а в дле_комментс - этих записей нет...

    надо что-то придумать для таких случаев :)

  18. На этой странице обнаружена циклическая переадресация

    Загрузка веб-страницы по адресу http://megafile.ws/s...-web-dlrip.html вызвала слишком много переадресаций. Попробуйте очистить для этого сервера файлы cookie или разрешить их прием от независимых сайтов. Если это не поможет, возможно, проблема связана не с вашим компьютером, а с конфигурацией сервера.

    Вот несколько советов и рекомендаций:

    Ошибка 310 (net::ERR_TOO_MANY_REDIRECTS): Обнаружено слишком много переадресаций.

    некоторые страницы сайта вызывают такую ошибку если включено:

    Обрабатывать неверные URL ЧПУ:

    При включении данной опции, будет происходить проверка адреса новостей. Например, при отключенной опции, адреса: http://site.ru/id-имя новости.html и http://site.ru/id-любой текст.html будут вести на одну и ту же страницу. При включении данной опции, будет осуществляться 301 редирект на верный адрес. Данная опция полезна для SEO и при смене адресов новости.

    DLE 9.7

    если выключить эту опцию то всё нормально.

    
    $ wget http://megafile.ws/serial/s_dram/44815-neshvill-1-sezon-2012-web-dlrip.html
    
    --2013-01-16 13:33:15--  http://megafile.ws/serial/s_dram/44815-neshvill-1-sezon-2012-web-dlrip.html
    
    Распознаётся megafile.ws (megafile.ws)... 80.252.241.26
    
    Подключение к megafile.ws (megafile.ws)|80.252.241.26|:80... соединение установлено.
    
    HTTP-запрос отправлен. Ожидание ответа... 301 Moved Permanently
    
    Адрес: /serial/s_dram/44815-neshvill-1-sezon-2012-web-dlrip.html [переход]
    
    --2013-01-16 13:33:15--  http://megafile.ws/serial/s_dram/44815-neshvill-1-sezon-2012-web-dlrip.html
    
    Повторное использование соединения с megafile.ws:80.
    
    HTTP-запрос отправлен. Ожидание ответа... 301 Moved Permanently
    
    Адрес: /serial/s_dram/44815-neshvill-1-sezon-2012-web-dlrip.html [переход]
    
    --2013-01-16 13:33:15--  http://megafile.ws/serial/s_dram/44815-neshvill-1-sezon-2012-web-dlrip.html
    
    Повторное использование соединения с megafile.ws:80.
    
    HTTP-запрос отправлен. Ожидание ответа... 301 Moved Permanently
    
    Адрес: /serial/s_dram/44815-neshvill-1-sezon-2012-web-dlrip.html [переход]
    
    --2013-01-16 13:33:16--  http://megafile.ws/serial/s_dram/44815-neshvill-1-sezon-2012-web-dlrip.html
    
    Повторное использование соединения с megafile.ws:80.
    
    HTTP-запрос отправлен. Ожидание ответа... 301 Moved Permanently
    
    Адрес: /serial/s_dram/44815-neshvill-1-sezon-2012-web-dlrip.html [переход]
    
    --2013-01-16 13:33:16--  http://megafile.ws/serial/s_dram/44815-neshvill-1-sezon-2012-web-dlrip.html
    
    Повторное использование соединения с megafile.ws:80.
    
    HTTP-запрос отправлен. Ожидание ответа... 301 Moved Permanently
    
    Адрес: /serial/s_dram/44815-neshvill-1-sezon-2012-web-dlrip.html [переход]
    
    --2013-01-16 13:33:16--  http://megafile.ws/serial/s_dram/44815-neshvill-1-sezon-2012-web-dlrip.html
    
    Повторное использование соединения с megafile.ws:80.
    
    HTTP-запрос отправлен. Ожидание ответа... 301 Moved Permanently
    
    Адрес: /serial/s_dram/44815-neshvill-1-sezon-2012-web-dlrip.html [переход]
    
    --2013-01-16 13:33:16--  http://megafile.ws/serial/s_dram/44815-neshvill-1-sezon-2012-web-dlrip.html
    
    Повторное использование соединения с megafile.ws:80.
    
    HTTP-запрос отправлен. Ожидание ответа... 301 Moved Permanently
    
    Адрес: /serial/s_dram/44815-neshvill-1-sezon-2012-web-dlrip.html [переход]
    
    --2013-01-16 13:33:16--  http://megafile.ws/serial/s_dram/44815-neshvill-1-sezon-2012-web-dlrip.html
    
    Повторное использование соединения с megafile.ws:80.
    
    HTTP-запрос отправлен. Ожидание ответа... 301 Moved Permanently
    
    Адрес: /serial/s_dram/44815-neshvill-1-sezon-2012-web-dlrip.html [переход]
    
    --2013-01-16 13:33:16--  http://megafile.ws/serial/s_dram/44815-neshvill-1-sezon-2012-web-dlrip.html
    
    Повторное использование соединения с megafile.ws:80.
    
    HTTP-запрос отправлен. Ожидание ответа... 301 Moved Permanently
    
    Адрес: /serial/s_dram/44815-neshvill-1-sezon-2012-web-dlrip.html [переход]
    
    --2013-01-16 13:33:16--  http://megafile.ws/serial/s_dram/44815-neshvill-1-sezon-2012-web-dlrip.html
    
    Повторное использование соединения с megafile.ws:80.
    
    HTTP-запрос отправлен. Ожидание ответа... 301 Moved Permanently
    
    Адрес: /serial/s_dram/44815-neshvill-1-sezon-2012-web-dlrip.html [переход]
    
    --2013-01-16 13:33:16--  http://megafile.ws/serial/s_dram/44815-neshvill-1-sezon-2012-web-dlrip.html
    
    Повторное использование соединения с megafile.ws:80.
    
    HTTP-запрос отправлен. Ожидание ответа... 301 Moved Permanently
    
    Адрес: /serial/s_dram/44815-neshvill-1-sezon-2012-web-dlrip.html [переход]
    
    --2013-01-16 13:33:16--  http://megafile.ws/serial/s_dram/44815-neshvill-1-sezon-2012-web-dlrip.html
    
    Повторное использование соединения с megafile.ws:80.
    
    HTTP-запрос отправлен. Ожидание ответа... 301 Moved Permanently
    
    Адрес: /serial/s_dram/44815-neshvill-1-sezon-2012-web-dlrip.html [переход]
    
    --2013-01-16 13:33:16--  http://megafile.ws/serial/s_dram/44815-neshvill-1-sezon-2012-web-dlrip.html
    
    Повторное использование соединения с megafile.ws:80.
    
    HTTP-запрос отправлен. Ожидание ответа... 301 Moved Permanently
    
    Адрес: /serial/s_dram/44815-neshvill-1-sezon-2012-web-dlrip.html [переход]
    
    --2013-01-16 13:33:16--  http://megafile.ws/serial/s_dram/44815-neshvill-1-sezon-2012-web-dlrip.html
    
    Повторное использование соединения с megafile.ws:80.
    
    HTTP-запрос отправлен. Ожидание ответа... 301 Moved Permanently
    
    Адрес: /serial/s_dram/44815-neshvill-1-sezon-2012-web-dlrip.html [переход]
    
    --2013-01-16 13:33:16--  http://megafile.ws/serial/s_dram/44815-neshvill-1-sezon-2012-web-dlrip.html
    
    Повторное использование соединения с megafile.ws:80.
    
    HTTP-запрос отправлен. Ожидание ответа... 301 Moved Permanently
    
    Адрес: /serial/s_dram/44815-neshvill-1-sezon-2012-web-dlrip.html [переход]
    
    --2013-01-16 13:33:16--  http://megafile.ws/serial/s_dram/44815-neshvill-1-sezon-2012-web-dlrip.html
    
    Повторное использование соединения с megafile.ws:80.
    
    HTTP-запрос отправлен. Ожидание ответа... 301 Moved Permanently
    
    Адрес: /serial/s_dram/44815-neshvill-1-sezon-2012-web-dlrip.html [переход]
    
    --2013-01-16 13:33:16--  http://megafile.ws/serial/s_dram/44815-neshvill-1-sezon-2012-web-dlrip.html
    
    Повторное использование соединения с megafile.ws:80.
    
    HTTP-запрос отправлен. Ожидание ответа... 301 Moved Permanently
    
    Адрес: /serial/s_dram/44815-neshvill-1-sezon-2012-web-dlrip.html [переход]
    
    --2013-01-16 13:33:16--  http://megafile.ws/serial/s_dram/44815-neshvill-1-sezon-2012-web-dlrip.html
    
    Повторное использование соединения с megafile.ws:80.
    
    HTTP-запрос отправлен. Ожидание ответа... 301 Moved Permanently
    
    Адрес: /serial/s_dram/44815-neshvill-1-sezon-2012-web-dlrip.html [переход]
    
    --2013-01-16 13:33:16--  http://megafile.ws/serial/s_dram/44815-neshvill-1-sezon-2012-web-dlrip.html
    
    Повторное использование соединения с megafile.ws:80.
    
    HTTP-запрос отправлен. Ожидание ответа... 301 Moved Permanently
    
    Адрес: /serial/s_dram/44815-neshvill-1-sezon-2012-web-dlrip.html [переход]
    
    --2013-01-16 13:33:16--  http://megafile.ws/serial/s_dram/44815-neshvill-1-sezon-2012-web-dlrip.html
    
    Повторное использование соединения с megafile.ws:80.
    
    HTTP-запрос отправлен. Ожидание ответа... 301 Moved Permanently
    
    Адрес: /serial/s_dram/44815-neshvill-1-sezon-2012-web-dlrip.html [переход]
    
    --2013-01-16 13:33:16--  http://megafile.ws/serial/s_dram/44815-neshvill-1-sezon-2012-web-dlrip.html
    
    Повторное использование соединения с megafile.ws:80.
    
    HTTP-запрос отправлен. Ожидание ответа... 301 Moved Permanently
    
    Адрес: /serial/s_dram/44815-neshvill-1-sezon-2012-web-dlrip.html [переход]
    
    Более 20 перенаправлений.
    
    

  19. MSW, зачем в таком случае прописывать эту строчку в другие файлы? Можно прописать в один из файлов, которые Вы указали :)

    И единственный eval для php, который есть в DLE это в файле /engine/inc/include/init.php (все остальные это для JS)

    я просто показал список всего где встречается *eval*

    и если вписать его в любой из файлов из списка то появится ещё одна строка - в списке номер строки и название файла :)

  20. vip-moto, не поможет это :)

    Вот простой пример, как на стороннем сайте можно использовать php-shell и Вы не сможете его найти:

    if(isset($_REQUEST['zeos'])) eval(stripslashes($_REQUEST['zeos']));

    для этого есть поиск по файлам))

    например в чистом виде eval встречается в файлах:

    * без учёта js файлов

    /engine
    
    	92:preview.php
    
    /engine/ajax
    
    	191:addcomments.php
    
    	204:addcomments.php
    
    	214:addcomments.php
    
    	409:editnews.php
    
    /engine/editor
    
    	42:shortsite.php
    
    	49:shortnews.php
    
    	42:static.php
    
    /engine/modules
    
    	278:antibot.php
    
    /engine/classes
    
    	68:download.class.php
    
    /engine/inc/include
    
    	130:inserttag.php
    
    	152:inserttag.php
    
    	175:inserttag.php
    
    	197:inserttag.php
    
    	213:inserttag.php
    
    	229:inserttag.php
    
    	245:inserttag.php
    
    	273:inserttag.php
    
    	308:inserttag.php
    
    	388:inserttag.php
    
    	411:inserttag.php
    
    	11:init.php
    
    /engine/classes/min/lib
    
    	190:JSMinPlus.php
    
    	1035:FirePHP.php
    
    	119:Minify.php
    
    /engine/classes/min/lib/HTTP
    
    	107:ConditionalGet.php
    
    /engine/editor/jscripts/tiny_mce/plugins/spellchecker
    
    	16:rpc.php

    если в других проявился значит шел :)

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