letters met accenten worden vreemde tekens
Code (php)
1
2
3
2
3
} 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>';
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?
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.
Gewijzigd op 15/06/2021 10:41:36 door - Ariën -
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.
Code (php)
1
2
3
4
5
6
2
3
4
5
6
<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>
<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>
Code (php)
1
2
3
2
3
} 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>';
echo ' Gelieve het anti-spamveld leeg maken laten aub. <br><br>';
echo '<a href="javascript:history.back(1);">Terug</a><br><br>';
Toevoeging op 15/06/2021 10:45:18:
O ja, trouwens: dit is mijn header, en daar lijkt op het eerste zicht niets mis mee.
Code (php)
1
2
3
4
2
3
4
<!doctype html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
Gewijzigd op 15/06/2021 10:47:05 door G P
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?
Gewijzigd op 15/06/2021 10:51:12 door - Ariën -
Heb je je eigen zin gelezen? "Gelieve het anti-spamveld leeg maken laten aub."
Gewijzigd op 15/06/2021 12:11:13 door G P
Oeps ;-) Merci
* 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?
Al is ReCaptcha V3 ook erg goed. Ik ben benieuwd waarom je niet daar naar kijkt?
Gewijzigd op 15/06/2021 14:14:15 door - Ariën -
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.
Quote:
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.
Quote:
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.
In de gewone pagina's heb ik dit bovenaan geplaatst
Terwijl het vlak daarvoor dit wasd:
Code (php)
1
2
3
4
2
3
4
<!doctype html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
Helaas komen de formulieren nu niet meer aan...
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.
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.
Gewijzigd op 24/06/2021 12:54:32 door Gerard van Katwijk
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 :-)
[...]
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:
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
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
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. :)