Система фильтрации в ColdFusion 8

Я работаю над небольшим простым проектом на локальном хосте для клиента, это система комментариев с фильтром.

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

Это простой запрос, никаких сложных вещей. Но у кого-нибудь есть предложения? Я пробовал # и cfloop, cfoutput, cfquery и т. д., но ничего не работает.

<cfquery name = "communityFilter" datasource = "#DSN#">
SELECT *
FROM cms_filter
</cfquery>


<!-- Query van de filter -->
<cfif form.comment CONTAINS communityFilter.word>
    Word gevonden!
<cfelseif NOT form.comment CONTAINS communityFilter.word>
    Geen word gevonden, system werkt =)
</cfif>

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


person D3VNL    schedule 13.08.2020    source источник
comment
Чтобы подтвердить, вы пытаетесь заменить плохие слова в form.comments ИЛИ просто отклонить всю запись? Имейте в виду, что CONTAINS не ищет целые слова, поэтому вы можете получить ложные срабатывания.   -  person SOS    schedule 13.08.2020


Ответы (1)


Когда вы ссылаетесь на результат запроса, вы должны указать номер строки следующим образом:

queryname.fieldname[rownumber]

Если вы этого не сделаете, вы получите значение из первой строки. Это то, что происходит с вами. Хотя комментарий может содержать нецензурные слова, вы не просматриваете все доступные нецензурные слова. Я предлагаю что-то вроде этого.

commentHasBadWord = false;
for (badWord in ValueList(cms_filter.word)) {
if (commentHasBadWord == false && form.comment contains badWord)
commentHasBadWord = true;
else
break;
}

if commentHasBadWord == true;
//code for bad comment
else 
// code for good comment
person Dan Bracuk    schedule 13.08.2020