Ik wil graag checken of iemand een bepaald emailadres gebruikt voor mijn contactformulier.

Ik gebruik daar voor dit, maar zit nu te vechten met meerdere emailadressen:

elseif ((stripos($_POST['email'],'[email protected]') !== false)) 


Ik heb nu dit geprobeerd:

elseif ((stripos($_POST['email'],'[email protected]' or '[email protected]') !== false)) 


elseif ((stripos($_POST['email'],'[email protected] [email protected]') !== false)) 


elseif ((stripos($_POST['email'],'[email protected]', '[email protected]') !== false)) 


Maar dit werk niet naar behoren, wat zou ik kunnen doen?
Ik wil absoluut geen captcha gebruiken, zelf word ik er gek van dat ik bij heel veel website 2 of 3 puzzels moet oplossen om een mail te versturen en klik vaak de website weg als dit moet.
Helaas is de enige correcte manier om een mailadres te valideren om een mail te versturen met een activatie-link.

Als je alleen de vorm van het adres wilt controleren, zou ik daarvoor een eigen datatype maken in de database, dan is de data verzekerd op databaseniveau:
https://dba.stackexchange.com/questions/68266/what-is-the-best-way-to-store-an-email-address-in-postgresql
Wil je dat liever niet, dan kan je een regex gebruiken:
https://stackoverflow.com/questions/201323/how-can-i-validate-an-email-address-using-a-regular-expression

Maar helemaal waterdicht zullen die laatste twee niet zijn.
Het is nog makkelijker om dit in een array te plaatsen, en met in_array() te controleren of de waarde in de array staat. Dan heb je ook geen stripos() nodig.

Bovendien is het vechten tegen de bierkaai, want een mailadres is zo aangemaakt en/of ingevuld. Om spammers te weren zal je ongetwijfeld een heel leger moeten inzetten om de lijst aan te vullen.

Je zegt dat je geen Captcha's wilt? Maar heb je al gekeken naar ReCaptcha V3?
https://developers.google.com/recaptcha/docs/v3

Het werkt niet met vinkjes, en ook niet met die puzzels. Serverside wordt er door Google gecontroleerd of iemand betrouwbaar is, en krijg je een score terug. Aan de hand van die score zeg je dan of een bericht toe wordt gelaten of niet. Ik gebruik dit ook, en het aantal geautomatiseerde spamberichten is gedaald tot 0.
Ad Fundum op 02/02/2022 15:07:58

Helaas is de enige correcte manier om een mailadres te valideren om een mail te versturen met een activatie-link.

Als je alleen de vorm van het adres wilt controleren, zou ik daarvoor een eigen datatype maken in de database, dan is de data verzekerd op databaseniveau:
https://dba.stackexchange.com/questions/68266/what-is-the-best-way-to-store-an-email-address-in-postgresql
Wil je dat liever niet, dan kan je een regex gebruiken:
https://stackoverflow.com/questions/201323/how-can-i-validate-an-email-address-using-a-regular-expression

Maar helemaal waterdicht zullen die laatste twee niet zijn.


Ik controleer het inderdaad ook nog op andere punten. Dit is de hele code:

if ( !isset($_POST['email']) or !preg_match( '~^[a-z0-9][a-z0-9_.\-]*@([a-z0-9]+\.)*[a-z0-9][a-z0-9\-]+\.([a-z]{2,6})$~i', $_POST['email']) or trim($_POST['email']) == '' or $_POST['email'] == '[email protected]')
{$aErrors['email'] = 'Uw emailadres ontbreekt of u heeft een niet gelding emailadres opgegeven.';$veldkleuremail = 'tekstveldred';
}elseif ((stripos($_POST['email'],'[email protected] [email protected]') !== false)) 
{$aErrors['email'] = 'Uw bericht wordt gezien als spam, daarom kunt u geen gebruik maken van dit formulier.';$veldkleuremail = 'tekstveldred';
}else{$veldkleuremail = 'tekstveldnorm';}



[size=xsmall]Toevoeging op 02/02/2022 15:17:09:[/size]

- Ariën - op 02/02/2022 15:10:23

Het is nog makkelijker om dit in een array te plaatsen, en met in_array() te controleren of de waarde in de array staat. Dan heb je ook geen stripos() nodig.

Bovendien is het vechten tegen de bierkaai, want een mailadres is zo aangemaakt en/of ingevuld. Om spammers te weren zal je ongetwijfeld een heel leger moeten inzetten om de lijst aan te vullen.

Je zegt dat je geen Captcha's wilt? Maar heb je al gekeken naar ReCaptcha V3?
https://developers.google.com/recaptcha/docs/v3

Het werkt niet met vinkjes, en ook niet met die puzzels. Serverside wordt er door Google gecontroleerd of iemand betrouwbaar is, en krijg je een score terug. Aan de hand van die score zeg je dan of een bericht toe wordt gelaten of niet. Ik gebruik dit ook, en het aantal geautomatiseerde spamberichten is gedaald tot 0.


Dat is ook misschien we een goed idee. Controleerd hij dan op ipadres?
En wat als iemand met het mailadres [email protected] zich aanmeldt?
Nu ga je zelf een eigen reguliere expressie voor mailadressen maken terwijl je dit prima door PHP kan laten doen:

https://www.w3schools.com/php/filter_validate_email.asp

Maar goed, de lijst met spammers bijhouden is echt een dagtaak. Een Recaptcha is beter, en tegenwoordig is ReCaptcha ook niet 'opdringerig' en 'vervelend'.

ReCaptcha controleert op meerdere manieren. Ik weet niet op wat voor manieren, maar hun kunnen het via een scala aan technieken prima aanvoelen of een aanvraag legitiem is, of van een scammer.

https://developers.google.com/recaptcha/docs/v3
Let wel, gebruik van Google is niet conform AVG/GDPR...

En ik hekel captcha's, dan ben ik weg bij een site.
Knettervervelend zijn die dingen, beetje stoplichten selecteren alsof ik niets beters te doen heb.
Ad Fundum op 02/02/2022 15:20:01

Let wel, gebruik van Google is niet conform AVG/GDPR... En ik hekel captcha's, dan ben ik weg bij een site.

Veel sites gebruiken dit, waaronder de groten. En als je het niet vertrouwt dan gebruik je toch 'incognitomodus'. Daarnaast is ReCaptcha V3 niet hinderlijk voor de gebruiker.

Bestaande invul (Re)Captcha's zijn allang gekraakt. Het schijnt dat er farms bestaan die zelfs manueel dit over kunnen typen voor spamruns. Een simpele oplossing is een extra invulveld die verplicht ingevuld moet worden, met een simpele vraag:
Waar gaat deze site over?
moet je dan wel weer zo een vervelende cookiewall gebruiken of hoeft dat niet?


[size=xsmall]Toevoeging op 02/02/2022 15:26:29:[/size]

- Ariën - op 02/02/2022 15:19:31

En wat als iemand met het mailadres [email protected] zich aanmeldt?
Nu ga je zelf een eigen reguliere expressie voor mailadressen maken terwijl je dit prima door PHP kan laten doen:

https://www.w3schools.com/php/filter_validate_email.asp



Klopt mijn script om te controleren of een emailadres werkelijk een emailadres is niet?

Ongewenste e-mailadressen toevoegen rechtstreeks in je code is natuurlijk een no-go. Een captcha zoals Ariën noemt, is een goede optie.

Ik weet niet om wat voor formulier het gaat, maar wellicht is het zinvol dat de ontvanger zijn mailadres moet verifiëren door op een link met code te klikken (die hij/zij per mail ontvangt).

Stel dat het gaat om een formulier waarmee je een reactie kan plaatsen, en je valideert niet of het mailadres inderdaad van die persoon is, dan kan iemand gewoon [email protected] als mailadres invoeren en dat wordt dan gewoon geaccepteerd.
J C op 02/02/2022 15:24:45

Klopt mijn script om te controleren of een emailadres werkelijk een emailadres is niet?

De huidige controle is niet echt handig. Dus laat dat lekker aan PHP over. :-)
Verder is je code ook een beetje in spaghetti stijl.
Het gaat om een contactformulier, zo laag drempelig mogelijk, dus er zijn ook maar 2 velden verplicht, emailadres en bericht.

Reageren