Артём Мáлков

Разрешаем гостям добавлять новости на сайте в DLE

7 апр14 комм

По себе знаю, что не всегда пользователю хочется создавать (регистрировать) свой профиль, для того чтобы поделиться тем или иным материалом (новостью, статьей, объявлением и прочим) на сайте. При этом желание разместить информацию у него все же есть.

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

1. Первое, что необходимо сделать – это зайти в панель управления вашим сайтом.

2. Далее в левом меню перейдите в раздел «Пользователи», пункт «Редактирование пользователей».

Разрешаем гостям добавлять новости на сайте в DLE

3. На открывшейся странице создайте нового пользователя нажатием на соответствующую кнопку в правом верхнем углу формы, со следующими данными:

  1. Логин: guest;
  2. Пароль: guest;
  3. E-Mail: ваш e-mail адрес;
  4. Группа: Пользователи.

Обратите внимание, что логин и пароль должны быть идентичны (одинаковы).

4. Подключаемся к вашему сайту по FTP и открываем файл addnews.php, который находится в папке /engine/modules/. В нем сразу после строк, похожих на:

if( !defined('DATALIFEENGINE') ) {
	header( "HTTP/1.1 403 Forbidden" );
	header ( 'Location: ../../' );
	die( "Hacking attempt!" );
}

вставляете:

if(!$is_logged) {

	include(ENGINE_DIR.'/api/api.class.php');

	$member_id = $dle_api->take_user_by_name('guest');
	$is_logged = true;

}

Здесь «guest» – это логин пользователя из 3 шага. Таким образом, мы разрешаем гостям добавлять материалы на вашем сайте по пути /addnews.html.

5. Дополнительно (но не обязательно), если вы хотите предоставить гостям возможность загрузки файлов и изображений к добавляемым ими статьям, в том же FTP откройте файл upload.php из папки /engine/ajax/, и строки, похожие на:

if( !$is_logged ) {
	die ( "{\"error\":\"{$lang['err_notlogged']}\"}" );
}

замените на:

if(!$is_logged) {

	$member_id['user_id'] = 2;
	$member_id['user_group'] = 4;

	$is_logged = true;

}

Здесь «4» вы заменяете на ID группы созданного ранее пользователя, а «2», соответственно, на его персональный ID.

Обратите внимание, что для корректности загрузки файлов для группы, в которой находится ранее созданный вами пользователь, должны быть выставлены соответствующие права (разрешения).

6. Очистите кэш сайта и проверьте корректность добавления статей от лица гостя.

Вот, собственно, и все. Хак тестировался на DLE версии 10.6 и 13.1.

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

Рекомендуем к просмотру
Как восстановить доступ к панели управления сайтом в DLE?
Статьи и советы
Функция для гостей: «Подписка на новые комментарии» на DLE
Хаки
Удаляем все комментарии, ожидающие проверки, в три клика на DLE
Хаки
14
комментариев
Форма комментирования этого поста скрыта. Авторизуйтесь, чтобы расширить привилегии гостевого посещения и получить необходимую помощь от сообщества Pandoge.
    • 1
    1
      •  Пользователь
    26 июл в 21:22
    Обратите внимание, что логин и пароль должны быть идентичны (одинаковы).

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

    • 33
    16
      •  Проверенный
    29 фев в 17:49

    Все здорово работает, но есть один момент. Не загружается изображение из дополнительного поля тип: "Загружаемое изображение" Нажимаю кнопку загрузить изображение, выбираю, после чего выходит сообщение "Вы не авторизированы на сайте"

    Может кто сможет подсказать куда копать хотя бы?

      • 28
      16
        •  Проверенный
      29 фев в 19:44

      Авто хака, может сможете сделать за вознаграждение?)

      • 18
      1066
        •  Команда Pandoge
      1 мар в 04:58

      Сергей, здравствуйте!

      Какую версию движка используете?

      • 12
      16
        •  Проверенный
      1 мар в 09:34

      Артём Мáлков, Использую версию 13.3

      • 20
      1066
        •  Команда Pandoge
      2 мар в 01:57

      Сергей, отпишусь в течении нескольких дней.

      • 10
      16
        •  Проверенный
      2 мар в 16:50

      Артём Мáлков, С нетерпением буду ждать!

      • 7
      16
        •  Проверенный
      10 мар в 17:32

      Артём Мáлков, Добрый день! Как успехи? Не посмотрели еще по этой теме?

      • 19
      1066
        •  Команда Pandoge
      16 мар в 14:27

      Сергей, здравствуйте!

      Прошу прощения за ожидание. Скоро будут новости по Вашему вопросу.

    • 23
    766
      •  Гости
    3 фев в 09:28

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

      • 28
      1066
        •  Команда Pandoge
      3 фев в 16:23

      Scorp, нужно написать хак, с помощью которого будет происходить замена указанного автора, например, на логин админа.

    • 25
    766
      •  Гости
    2 окт в 11:24

    Не знаете почему может на DLE 12 не работать?

      • 21
      1066
        •  Команда Pandoge
      2 окт в 14:11

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

      $member_id = $dle_api->take_user_by_name("guest");

      Сделали это?

      • 11
      766
        •  Гости
      2 окт в 15:26

      Спасибо большое, не понял в чем суть, но щас все ок. Причем не чего не менял..

Подняться наверх
«Pandoge» - помощник вебмастера