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?
ik zou niet filteren met tekens die toegestaan zijn.

Hooguit zou ik filteren op wat ik per se niet in de tekst wil hebben.
Bijvoorbeeld html-tags en dan met name <script>

Dat filter je er (stilzwijgend) uit met strip_tags().

als je te streng bent, kan het heel eenvoudig zijn dat valide invoer ineens afgekeurd wordt.
In jouw bericht leidt een komma al tot "geen vreemde tekens", maar wat voor jou kennelijk vreemd is, is voor een ander gewoon.

Je ziet dit ook vaak op bestel- aanmeldformulieren.
Iemand bedenkt dan dan een straatnaam toch wel minimaal uit 3 letters bestaat. (er is een dorp met de straten A en B)
of een straatnaam bevat geen cijfers. (18 septemberplein)
Of een naam bestaat uit 3 letters minimaal (helaas voor Jo)
of mag geen - bevatten (helaas Willem-Alexander).

Kortom: maak het niet te strikt en draai het om: wat mag er écht niet in.

En als het om spam gaat: ReCaptcha is al genoemd.
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).

Dan heb je je encoding niet op orde. Fix het en laat weten of dat is gelukt.

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

Goed idee, maar vergeet dan niet dat Unicode karakters sterk op op elkaar kunnen lijken, en dat je die karakters eerst moet normaliseren voordat je de input string met een woordenboek vergelijkt.
Ik heb bovenaan in elke CSS de volgende code geplaatst:
@charset "UTF-8";


In de gewone pagina's heb ik dit bovenaan geplaatst
<!doctype html>
<html>
<head>
<meta charset="UTF-8">


Terwijl het vlak daarvoor dit wasd:
<!doctype html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />


Helaas komen de formulieren nu niet meer aan...
Wat gebeurt er nu precies dan? Want zo'n grote wijziging is dit ook weer niet dat een site meteen kan breken.
Wat zegt je browser over je webpagina-instellingen? Herkent die je site als UTF-8?
G P op 15/06/2021 14:06:41

Geen idee. Ik heb dit ook maar geplukt van ergens anders want ben zelf geen php-expert. Hoe zou jij het doen?

Van "plukken" wordt je meestal niet veel wijzer. Behalve wanneer je je vervolgens verdiept in het ge"pluk"te. ;) Ik doe dat meestal door gewoon wat kleine dingetjes te verwijderen of te veranderen. Dan krijg je meestal wel een idee van de betekenis van dingen.
Ad Fundum op 24/06/2021 08:16:51

Beter is om gewoon een goede handleiding of tutorial te lezen...

Mee eens, maar wat is de praktijk? Goede handleidingen (die je aan de hand nemen) zijn uitzonderingen, dus dat motiveert niet om "handleidingen" te raadplegen.
Ter zijde: 'tutorial' is een Engels begrip voor "handleiding", maar ook "instructie" is een alternatief daarvoor.

https://www.phphulp.nl/php/tutorial/php-algemeen/unicode-enzo/831/

Ook bij dit onderdeel van het zich als "Nederlands" kwalificerend forum, vielen mij de vele onnodig niet-Nederlandstalige woorden/begrippen op. Ook dat is een flinke belemmering om "handleidingen" te raadplegen.
Gerard Katwijk op 24/06/2021 12:45:35

Ook bij dit onderdeel van het zich als "Nederlands" kwalificerend forum, vielen mij de vele onnodig niet-Nederlandstalige woorden/begrippen op. Ook dat is een flinke belemmering om "handleidingen" te raadplegen.


Heel juist. Bijna overal wordt onze mooie taal "verkracht" het Nederlands wordt steeds meer een mengelmoes van meerdere talen
Überhaupt Duits
Svp Frans (enkel Nederlanders, niet de Vlamingen)
Admin Engels
Enz
Ivo P op 15/06/2021 13:55:23

in de openingspost van dit topic (om maar even een voorbeeld te pakken) gebruik je onder andere:
[...]
Die vang je allemaal niet in je toegestaan-lijstje :-)

Nee hoor, de preg_match kijkt namelijk alleen maar naar het eerste teken van de input. Je mag alles in je bericht opnemen, zolang je bericht maar met een een letter of cijfer begint.
Jan R op 24/06/2021 14:05:34

[quote="Gerard Katwijk op 24/06/2021 12:45:35"]
Ook bij dit onderdeel van het zich als "Nederlands" kwalificerend forum, vielen mij de vele onnodig niet-Nederlandstalige woorden/begrippen op. Ook dat is een flinke belemmering om "handleidingen" te raadplegen.

Heel juist. Bijna overal wordt onze mooie taal "verkracht" het Nederlands wordt steeds meer een mengelmoes van meerdere talen
Überhaupt Duits
Svp Frans (enkel Nederlanders, niet de Vlamingen)
Admin Engels
Enz
[/quote]
Hoewel ik op dit punt, in het digitale wereldje, vaak aangevallen wordt door Anglofielen, ben ik geen puritein. Ook ik (wie niet?) gebruik niet-Nederlandse begrippen en soms ontkom je er moeilijk aan. Maar niet uit luiheid of gebrek aan kennis van de Nederlandse taal. Zeker waar teksten (ook) voor niet-ingewijden bedoeld zijn, is gebrekkig Nederlands, naar mijn smaak, uit den boze. In de loop der tijd heb ik, in een "spreadsheet", ;) een heel lijstje samengesteld van Engelstalige begrippen en hun Nederlandstalige vervanger met zelfs alternatieven. :)

Reageren