vreemde tekens - bijna allemaal - uitsluiten

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

G P

G P

11/03/2021 12:01:39
Quote Anchor link
Hallo allemaal

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)
PHP script in nieuw venster Selecteer het PHP script
1
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>'; ?>


Wat kan ik doen om dit goed te krijgen?
Gewijzigd op 11/03/2021 12:02:35 door G P
 
PHP hulp

PHP hulp

26/10/2021 23:02:56
 
Ozzie PHP

Ozzie PHP

11/03/2021 12:42:06
Quote Anchor link
Probeer in plaats van:

"/^[A-Za-z0-9-_.+%]/"

eens

"/^[A-Za-z0-9-_.+%]/u"
 
Ivo P

Ivo P

11/03/2021 12:42:27
Quote Anchor link
In plaats van alles te verbieden, behalve wat _jij_ goedkeurt, kun je misschien beter kijken, naar wat je juist niet in je tekst wilt hebben.

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.
 
G P

G P

11/03/2021 12:46:21
Quote Anchor link
Veel van die vreemde tekens wordt gebruikt in spam, vandaar. Maar eigenlijk is het de bedoeling dat die vreemde tekens dus niet gebruikt mogen worden, maar letters met een accent of trema wel.

Dus wel:
ä ë ï ö ü
à è ù
á é
ñ

niet:
al die vreemde tekens die in spam gebruikt worden.
Gewijzigd op 11/03/2021 12:53:16 door G P
 
Ivo P

Ivo P

11/03/2021 13:22:08
Quote Anchor link
In dat geval zou je op 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?
 
Ozzie PHP

Ozzie PHP

11/03/2021 14:01:02
Quote Anchor link
Heb je mijn antwoord al getest?
 
G P

G P

11/03/2021 14:07:50
Quote Anchor link
Ivo P op 11/03/2021 13:22:08:


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 :-(
 
Ivo P

Ivo P

11/03/2021 15:25:42
Quote Anchor link
G P op 11/03/2021 14:07:50:
Ivo P op 11/03/2021 13:22:08:


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:




Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
/^[\p{L}-]*$/u
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:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
/^[\p{L}*\.,-]*$/u
 
Ad Fundum

Ad Fundum

11/03/2021 15:26:08
Quote Anchor link
Waarom gebruik je niet Intl?
Voordelen kunnen zijn de spoofchecker en grapheme-functies voor filteren op metadata van karakters...
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.