Уже давно в интернете ветает проблема ANTISPAM: User ID not valid при отправке ПМ другому пользователю. Чаще всего она возникает, когда Вы тратите немного больше времени на написание сообщения, чем это позволяет скрипт (истекает сессия).
Неудачные способы(!)Найти
$id_key = $_POST[$_SESSION['id_key']];
Заменить на$id_key = @$db->safesql($_POST[$_SESSION['id_key']]);
Или же просто удалить систему антиспама в engine/modules/pm.phpif( $id_key == "" or $id_key != $dle_login_hash ) $stop .= "<li>ANTISPAM: User ID not valid</li>";
if (clean_url($_SERVER['https_REFERER']) != clean_url($_SERVER['https_HOST'])) $stop .= "<li>ANTISPAM: User ID not valid</li>";
Правильное решениеДанная проблема присутствует только в версиях 9.0 и 9.2, в версии 9.3 отключение антиспам системы производится через настройки АЦ > Безопасность (Включить автоматическое блокирование спам программ). Она срабатывает, как для новостей, так и для ПМ.
Предлагаю просто на просто перенести данную фишечку с актуальной версии для пенсионеров DLE 9.0 и 9.2. Делается это след. образом.
Находим$id_key = $_POST[$_SESSION['id_key']];
if( $id_key == "" or $id_key != $dle_login_hash ) $stop .= "<li>ANTISPAM: User ID not valid</li>";
if (clean_url($_SERVER['https_REFERER']) != clean_url($_SERVER['https_HOST'])) $stop .= "<li>ANTISPAM: User ID not valid</li>";
Заменяем на:if( $config['sec_addnews'] ) {
$id_key = $_POST[$_SESSION['id_key']];
if( $id_key == "" or $id_key != $dle_login_hash ) $stop .= "<li>ANTISPAM: User ID not valid</li>";
if (clean_url($_SERVER['https_REFERER']) != clean_url($_SERVER['https_HOST'])) $stop .= "<li>ANTISPAM: User ID not valid</li>";
}
Все работает на ура!
Проверенно на двух версиях, описанных в заголовке публикации.
Версии: 9.0 - 9.2
Автор: F1ST