Уже давным давно в интернете ветает проблема 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['HTTP_REFERER']) != clean_url($_SERVER['HTTP_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['HTTP_REFERER']) != clean_url($_SERVER['HTTP_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['HTTP_REFERER']) != clean_url($_SERVER['HTTP_HOST'])) $stop .= "<li>ANTISPAM: User ID not valid</li>";
}
Все работает на ура!
Проверенно на двух версиях, описанных в заголовке публикации.
Извиняюсь за многословность, уж очень люблю писульки писать :)
Версии: 9.0 - 9.2
Автор: F1ST