Разрешаем гостям добавлять новости на сайте в DLE
По себе знаю, что не всегда пользователю хочется создавать (регистрировать) свой профиль, для того чтобы поделиться тем или иным материалом (новостью, статьей, объявлением и прочим) на сайте. При этом желание разместить информацию у него все же есть.
Чтобы предусмотреть такой поворот событий, сделаем возможность добавлять материалы и гостям на сайте, который находится под управлением CMS DataLife Engine.
1. Первое, что необходимо сделать – это зайти в панель управления вашим сайтом.
2. Далее в левом меню перейдите в раздел «Пользователи», пункт «Редактирование пользователей».
3. На открывшейся странице создайте нового пользователя нажатием на соответствующую кнопку в правом верхнем углу формы, со следующими данными:
- Логин: guest;
- Пароль: guest;
- E-Mail: ваш e-mail адрес;
- Группа: Пользователи.
Обратите внимание, что логин и пароль должны быть идентичны (одинаковы).
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.
Для безопасности советую создавать пользователя, отличного от предложенного в статье, чтобы никто не мог воспользоваться его профилем.