vreemde tekens - bijna allemaal - uitsluiten
Om spam tegen te gaan heb ik onderstaande code in een formulier toegevoegd.
Een maat van mij, waar ik een website voor schreef, krijgt klachten van klanten die geen berichtjes kunnen sturen als er bepaalde woorden in gebruikt worden. Het gaat namelijk bv om het woord cliënt.
Ondanks ik niet verboden heb een ë te gebruiken in de code onderaan, wordt dit niet weerhouden. Het zou thans wel moeten kunnen dat sommige leestekens boven de letters (zoals ¨´) wel gebruikt moeten worden.
Dit is de code
Code (php)
1
2
3
4
5
6
7
2
3
4
5
6
7
<?php
} elseif(!preg_match("/^[A-Za-z0-9-_.+%]/", $_POST['onderwerp'])){
echo ' Geen vreemde tekens in het onderwerp aub.<br><br>';
echo '<a href="javascript:history.back(1);">Terug</a><br><br>';
} elseif(preg_match("/[~`§µÐц|©®]/", $_POST['onderwerp'])) {
echo ' Er zijn in het onderwerp vreemde tekens gedetecteerd.<br>Gelieve deze uit het onderwerp te halen aub.<br><br>';
echo '<a href="javascript:history.back(1);">Terug</a><br><br>'; ?>
} elseif(!preg_match("/^[A-Za-z0-9-_.+%]/", $_POST['onderwerp'])){
echo ' Geen vreemde tekens in het onderwerp aub.<br><br>';
echo '<a href="javascript:history.back(1);">Terug</a><br><br>';
} elseif(preg_match("/[~`§µÐц|©®]/", $_POST['onderwerp'])) {
echo ' Er zijn in het onderwerp vreemde tekens gedetecteerd.<br>Gelieve deze uit het onderwerp te halen aub.<br><br>';
echo '<a href="javascript:history.back(1);">Terug</a><br><br>'; ?>
Wat kan ik doen om dit goed te krijgen?
Gewijzigd op 11/03/2021 12:02:35 door G P
"/^[A-Za-z0-9-_.+%]/"
eens
"/^[A-Za-z0-9-_.+%]/u"
En voor e-mail zal dat hoofdzakelijk beperkt zijn tot HTML.
Dus als je < en > zou verbieden, zou dat je probleem al tackelen.
Zij het, dat je dan ook de tekst "alleen voor kinderen < 12 jaar" niet kunnen invoeren.
Daarom zou je ook voor strip-tags() kunnen gaan: je verwijdert dan gewoon alle html uit je invoer.
Want welke schade richt een copyright-c © aan? En waarom mag een spaanse N niet? ñ komt in spaanse teksten en mogelijk namen voor.
Ooit heb ik op een PHP congres een IJslandse PHP-er aangehoord. Die heeft zo'n "kromme d" in zijn naam.
En die is er dus fel op, dat dat vaak niet lukt.
Dus wel:
ä ë ï ö ü
à è ù
á é
ñ
niet:
al die vreemde tekens die in spam gebruikt worden.
Gewijzigd op 11/03/2021 12:53:16 door G P
https://stackoverflow.com/questions/2133758/how-do-i-match-accented-characters-with-php-preg aanwijzingen kunenn vinden.
Want jouw lijst is nooit uitputtend genoeg.
Je mist nu al bijvoorbeeld de ê en û etc. en de ß is voor Duitsers ook geen rare letter.
Ik heb trouwens ook het idee dat je een spatie niet accepteert als eerste teken?
Je eerste elsif() gaat alleen om het eerste teken van je onderwerp?
In dat geval zou je op Want jouw lijst is nooit uitputtend genoeg.
Je mist nu al bijvoorbeeld de ê en û etc. en de ß is voor Duitsers ook geen rare letter.
Ik heb trouwens ook het idee dat je een spatie niet accepteert als eerste teken?
Je eerste elsif() gaat alleen om het eerste teken van je onderwerp?
Heb je mijn antwoord al getest?
Ivo P op 11/03/2021 13:22:08:
In dat geval zou je op https://stackoverflow.com/questions/2133758/how-do-i-match-accented-characters-with-php-preg aanwijzingen kunenn vinden.
Heb even gekeken. Uit die regex geraak ik niet wijs uit, volgens mij is daar ook geen oplossing voor gevonden.
Toevoeging op 11/03/2021 14:08:12:
Ozzie PHP op 11/03/2021 14:01:02:
Heb je mijn antwoord al getest?
Ja, maar helaas :-(
G P op 11/03/2021 14:07:50:
Heb even gekeken. Uit die regex geraak ik niet wijs uit, volgens mij is daar ook geen oplossing voor gevonden.
Toevoeging op 11/03/2021 14:08:12:
Ivo P op 11/03/2021 13:22:08:
In dat geval zou je op https://stackoverflow.com/questions/2133758/how-do-i-match-accented-characters-with-php-preg aanwijzingen kunenn vinden.
Heb even gekeken. Uit die regex geraak ik niet wijs uit, volgens mij is daar ook geen oplossing voor gevonden.
Toevoeging op 11/03/2021 14:08:12:
zou unicode letters (word characters) matchen.
Daaronder vallen ook cijfers.
Maar welke "rare" letters vallen onder de term letter, is afhankelijk van de setLocale() settings. (staat een voorbeeldje van een Italiaan).
Als je bepaalde tekens ook zou willen toestaan, dan kun je die toevoegen. Bijvoorbeeld ook *, punt en komma:
Intl?
Voordelen kunnen zijn de spoofchecker en grapheme-functies voor filteren op metadata van karakters...
Waarom gebruik je niet Voordelen kunnen zijn de spoofchecker en grapheme-functies voor filteren op metadata van karakters...