Я получил несколько спам-ответов на мою веб-форму, и я использовал их, чтобы создать список полей для фильтрации.Мой план состоял в том, чтобы сравнить - используя strpos - каждое поле с текстовым полем, отправленным пользователем, и, если есть совпадение, перенаправить этот почтовый ответ.
По какой-то причине код, который я пробую, просто не 'кажется, ударил спичку;Чего мне не хватает?
// Query list of spam fields
$sqlSpam= "SELECT * FROM tblspamfilter";
$rstSpam= mysqli_query($db, $sqlSpam);
// Search for key in the notes field passed by the web form
while ($rowSpam=mysqli_fetch_assoc($rstSpam)) {
$Key= $rowSpam['Key'];
if (strpos($notes, $Key) === false) {
$spam=0;
} else {
$spam++;
}
}
if ($spam==0) {
// send the mail...
} else {
// not today Mr spammer
}
Он работал нормально как статический спам-ключ, но теперь нет, когда я добавил элемент базы данных.Ничто из того, что я пробую в поле отправки формы (точное совпадение, совпадение части и т. Д.), Не совпадает со спамом, и вся почта проходит.Я новичок в php, поэтому я предполагаю, что что-то упустил из-за того, что он сравнивает данные из таблицы?
Редактировать: в моей таблице спама есть следующие поля:
| idKey | Key |
| 1 | jnl.io |
| 2 | drive.google.com |
| 3 | casinogorilla.com |
| 4 | www.talkwithcustomer.com |
| 5 | sexy |
| 6 | profitable database of email addresses |
| 7 | My name is Roy |
| 8 | Sexy girls |
И используя этот код:
$spamWords = mysqli_fetch_assoc($rstSpam);
$spam = 0;
foreach ($spamWords as $spamWord) {
if (strpos($notes, $spamWord) !== false) {
$spam++;
}
}
Я получаю совпадение для jnl.io, drive.google.com, но не для www.talkwithcustomer.com, sexy и т. Д. Я не вижу шаблондля этого вообще.Есть ли ограничение по размеру?Является ли strpos неправильной техникой?
Рабочий код Теперь работает следующее;Я не уверен, что именно это исправило, но для таблицы была странная сортировка, которую я заменил на utf8_general_ci , и это, среди других предложений, дало возможность его проверки.Большое спасибо за просмотр.
// Check the notes field for any likely spam indicators
$spam=0;
while ($rowSpam=mysqli_fetch_assoc($rstSpam)) {
$Key= $rowSpam['Key'];
if (strpos($notes, $Key) !== false) {
$spam++;
}
}