Om spam te voorkomen gebruik ik in een mailform oa deze code


} elseif(!preg_match("/^[A-Za-z0-9-_.+%]/", $_POST['bericht'])){ 
    echo ' Geen vreemde tekens in je bericht aub.<br><br>'; 
    echo '<a href="javascript:history.back(1);">Terug</a><br><br>'; 


Vreemd genoeg worden letters met een accent (zoals é è à) en accenten ook tegengehouden. Maar wat blijkt: deze letters met een accent worden omgezet in à (hoofdletter A en een tilde).

Hoe kan ik er voor zorgen dat de letters met een accent wel toegelaten worden, maar de à niet?
Dit klinkt als het bekende UTF-8 probleem, omdat je mogelijk niet overal UTF-8 ondersteunt waar dat wel zou moeten.

Dus controleer je bestands-encoding, je meta-tags, en geef dit bij sterke voorkeur mee via header().

Verder is in mijn ogen ReCaptcha V3 beter tegen spam. Met het blokkeren van letters met tildes blokkeer je ook Spaanse namen.
Merci voor de snelle reactie. Ik ga het bekijken hoe ik UTF-8 kan optimaliseren.

Wat tot nu toe het beste geholpen heeft in mijn geval: mijn 'captcha'-systeem is een vooringevuld veld dat gebruikers moeten leegmaken. Bots hebben immers de gewoonte alles vol te spammen.

<tr>
        <td width="214" height="30" ><div align="right"><font face="Helvetica, Arial, sans-serif" size="2" color="#c94d7f">Anti-spam *</font></div></td>
        <td width="14" height="30" ></td>
       <td height="30" colspan="3" valign="middle"><input name="antispam" type="text" value="dit veld leegmaken" size="51" />          </td>
        </tr>
      <tr>

} elseif(!empty($_POST['antispam'])) { 
    echo ' Gelieve het anti-spamveld leeg maken laten aub. <br><br>'; 
    echo '<a href="javascript:history.back(1);">Terug</a><br><br>';	


[size=xsmall]Toevoeging op 15/06/2021 10:45:18:[/size]

O ja, trouwens: dit is mijn header, en daar lijkt op het eerste zicht niets mis mee.


<!doctype html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
Een betere oplossing is om een vraag te stellen die enkel jouw gebruikers weten. Zoals het afmaken van de slogan die bovenaan jouw site staat.

Als je meer drempelvrij wilt werken, dan is ReCaptcha V3 een mooie oplossing. Tevens biedt deze ook een CSRF-beveiliging die verhinderd dat buitenstaanders vanaf een andere server jouw script aanroepen.

Over jouw probleem: Kijk eens wat de paginainstellingen van jouw browser laten zien qua encoding?
off-topic
Heb je je eigen zin gelezen? "Gelieve het anti-spamveld leeg maken laten aub."
Wat is er mis met die zin?
Leeg maken laten?

Leeg laten?
of
Leeg maken?
of
Leeg laten maken?
Oeps ;-) Merci
in de openingspost van dit topic (om maar even een voorbeeld te pakken) gebruik je onder andere:

* een dubbele punt :
* een haakje openen (
* een haakje sluiten )
* een vraagteken ?
* en zelfs spaties

Die vang je allemaal niet in je toegestaan-lijstje :-)
Geen idee. Ik heb dit ook maar geplukt van ergens anders want ben zelf geen php-expert. Hoe zou jij het doen?
Ik zou liever een array met bepaalde blacklist-woorden (UTF-8) maken, dan je op bepaalde tekens filtert. Er zijn ook namen met bijvoorbeeld een ã of een Ñ. Die wil je niet filteren...

Al is ReCaptcha V3 ook erg goed. Ik ben benieuwd waarom je niet daar naar kijkt?

Reageren