Ищу Запрет на размещение дубликатов новостей

Non-Stop

Профессор
Регистрация
9 Июл 2007
Сообщения
436
Реакции
41
Собственно интересует САБЖ. ДЛЕ 12.1
Нужно сделать автоматическую проверку на дубликат при размещении новости с сайта пользователями.
кто то уже делал подобное?
 

PirateGod

Постоялец
Регистрация
6 Июн 2014
Сообщения
127
Реакции
107
Собственно интересует САБЖ. ДЛЕ 12.1
Нужно сделать автоматическую проверку на дубликат при размещении новости с сайта пользователями.
кто то уже делал подобное?
А как определять? Вы расплывчато сформулировали.
Название новости? Описание? И насколько точно проверять схождение? Текст или html?
Или может быть изображения попиксельно проверить или хотя бы хеш сумму?
 

Горбушка

Ищу её...
Регистрация
2 Май 2008
Сообщения
3.444
Реакции
2.524
Правильный подход - выводить 5-10 "похожих" заголовков новостей и передать выбор пользователю. Ну и наказывать провинившихся.
 

Non-Stop

Профессор
Регистрация
9 Июл 2007
Сообщения
436
Реакции
41
Хотя бы по заголовку. Но с запретом поста.
Нашел похожее решение для ранних версий DLE
Будет работать на 12?

Найти
engine/modules/addnews.php
Код:
 if(trim($short_story) == "" or !$short_story) $stop .= $lang['add_err_5'];
Добавить ПОСЛЕ

Код:
$row = $db->super_query ("SELECT COUNT(*) as count FROM dle_post WHERE title = '$title'");

if ($row['count']) $stop .= $lang['add_err_9'];


В файле language/Russian/website.lng
Найти

Код:
'add_err_8' => "К сожалению у вас нет прав для публикации новостей на сайте.",
ДобавитьПОСЛЕ

Код:
'add_err_9' => "<li>Похожая новость уже есть!</li>",
 
Последнее редактирование:

Горбушка

Ищу её...
Регистрация
2 Май 2008
Сообщения
3.444
Реакции
2.524
Походая новость уже есть!
Плохо, когда на сайте есть походые новости )))
Очень плохая идея... Номером 9 100% воспользуется целсофт в новых версиях.
Всегда нужно добавлять префикс к своим переменным чтобы не пересекаться с официальным переводом.
 

Slavutich

Гуру форума
Регистрация
29 Ноя 2010
Сообщения
151
Реакции
70
вот что нашлось, не оно?
После запроса дубли будут удалены и невозможно будет добавить статью с одинаковым заголовком.
Для просмотра ссылки Войди или Зарегистрируйся
 
Последнее редактирование:

Non-Stop

Профессор
Регистрация
9 Июл 2007
Сообщения
436
Реакции
41
вот что нашлось, не оно?
После запроса дубли будут удалены и невозможно будет добавить статью с одинаковым заголовком.
Для просмотра ссылки Войди или Зарегистрируйся
Выполнил запрос, попробовал добавить статью с тем же титлом - добавитлась без проблем.
ДЛЕ 12.1

вот что нашлось, не оно?
После запроса дубли будут удалены и невозможно будет добавить статью с одинаковым заголовком.
Для просмотра ссылки Войди или Зарегистрируйся
При добавлении статьи с одинаковым заголовком перекидывает на страницу с ошибкой.

Код:
MySQL Error!
MySQL error in file: /engine/inc/addnews.php at line 862
Error Number: 1062
The Error returned was:
Duplicate entry ' ' for key 'title'
SQL query:

INSERT INTO dle_post (date, autor, short_story, full_story, xfields, title, descr, keywords, category, alt_name, allow_comm, approve, allow_main, fixed, allow_br, symbol, tags, metatitle) values ('2018-11-16 16:25:15',  '1', '1', '1', '0', '0', '', '', '')

Можно сделать выводом сообщения в модальном окне, без перезагрузки страницы?
 
Последнее редактирование модератором:

Горбушка

Ищу её...
Регистрация
2 Май 2008
Сообщения
3.444
Реакции
2.524
Всё правильно MySQL возвращает ошибку, DLE её обрабатывает.
Добавьте в Insert указание IGNORE. И добавьте обработчик...

При этом надо пресекать другие запросы в БД - добавление тегов, мета-информации, обновление счётчиков и много чего.

Просто добавить уникальный индекс на таблицу - мало!
 

Non-Stop

Профессор
Регистрация
9 Июл 2007
Сообщения
436
Реакции
41
Сейчас стал вопрос о добавлении материалов пользователями, поэтому нужно как то этот вопрос облагородить, что бы вместо этой ошибки MySQL выдавало сообщение что такая новость уже есть в базе..

Или как вернуть в исходное состояние таблицу , что бы не выдавало ошибок при дубликатах

Для возврата таблицы в исходное состояние после выполнение указанного запроса, после которого выдает ошибку - нужно удалить индекс поля title в phpmyadmin
Код:
DROP INDEX title ON dle_post
 
Последнее редактирование модератором:
Сверху