function checkmail

Gestart doorMarjolein28 reacties100 weergaven

29 berichten · pagina 1 van 2

Marjolein

Lid · Topicstarter

Berichten
15.446
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
Ik heb onderstaande code om te checken of er een geldig emailadres wordt ingevoerd, maar er komt heel vaak de melding dat het geen geldig emailadres is terwijl dit wel zo is. Hoe kan ik het toch goed checken maar wel zo dat hij alle geldige emailadressen gewoon accepteert?
[COLOR= #0000BB]<?php[/COLOR]
[COLOR= #007700]function[/COLOR] checkmail[COLOR= #007700]([/COLOR][COLOR= #0000BB]$mail[/COLOR][COLOR= #007700]) 
{[/COLOR]
    [COLOR= #FF8000]// explode het e-mail adres op een @[/COLOR]
    [COLOR= #0000BB]$email_host[/COLOR] [COLOR= #007700]=[/COLOR] [URL="http://www.php.net/explode"]explode[/URL][COLOR= #007700]([/COLOR][COLOR= #DD0000]"@"[/COLOR][COLOR= #007700],[/COLOR] [COLOR= #0000BB]$mail[/COLOR][COLOR= #007700]);[/COLOR] 
    [COLOR= #FF8000]// pak alles na de @[/COLOR]
    [COLOR= #0000BB]$email_host[/COLOR] [COLOR= #007700]=[/COLOR] [COLOR= #0000BB]$email_host[/COLOR][COLOR= #007700][[/COLOR][COLOR= #DD0000]1[/COLOR][COLOR= #007700]];[/COLOR]
    [COLOR= #FF8000]// zet een var met de (eventuele) DNS van de domein[/COLOR]
    [COLOR= #0000BB]$email_resolved[/COLOR] [COLOR= #007700]=[/COLOR] [URL="http://www.php.net/gethostbyname"]gethostbyname[/URL][COLOR= #007700]([/COLOR][COLOR= #0000BB]$email_host[/COLOR][COLOR= #007700]);[/COLOR] 

    [COLOR= #FF8000]// kijk of er een DNS aan zit en of alles voor en na het e-mail adres klopt[/COLOR]
    [URL="http://www.php.net/if"]if[/URL] [COLOR= #007700]([/COLOR][COLOR= #0000BB]$email_resolved[/COLOR] [COLOR= #007700]!=[/COLOR] [COLOR= #0000BB]$email_host[/COLOR] [COLOR= #007700]&&[/COLOR] [URL="http://www.php.net/eregi"]eregi[/URL][COLOR= #007700]([/COLOR][COLOR= #DD0000]"^[0-9a-z]([-_.~]?[0-9a-z])*@[0-9a-z]([-.]?[0-9a-z])*\.[a-z]{2,4}$"[/COLOR][COLOR= #007700],[/COLOR][COLOR= #0000BB]$mail[/COLOR][COLOR= #007700]))[/COLOR] 
        [COLOR= #0000BB]$valid[/COLOR] [COLOR= #007700]=[/COLOR] [COLOR= #0000BB]1[/COLOR][COLOR= #007700];[/COLOR] 

    [COLOR= #FF8000]// wanneer het geldig is, is $valid = 1, zo niet, dan geeft hij geen result (NULL)[/COLOR]
    [URL="http://www.php.net/return"]return[/URL] [COLOR= #0000BB]$valid[/COLOR][COLOR= #007700]; 
}[/COLOR]
?>


Ik denk dat het iets is met die DNS?
0
Berichten
6.485
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
[COLOR= #0000BB]<?php[/COLOR]
[COLOR= #007700]function[/COLOR] checkmail[COLOR= #007700]([/COLOR][COLOR= #0000BB]$mail[/COLOR][COLOR= #007700]) {[/COLOR]
    [URL="http://www.php.net/if"]if[/URL][COLOR= #007700]([/COLOR][URL="http://www.php.net/preg_match"]preg_match[/URL][COLOR= #007700]([/COLOR][COLOR= #DD0000]~^[a-z0-9][a-z0-9_.-]*@([a-z0-9]+.)*[a-z0-9][a-z0-9-]+.([a-z]{2,6})$~i[/COLOR][COLOR= #007700],[/COLOR] [COLOR= #0000BB]$mail[/COLOR][COLOR= #007700])) {[/COLOR]
        [URL="http://www.php.net/return"]return[/URL] true[COLOR= #007700];
    }[/COLOR]
    [URL="http://www.php.net/else"]else[/URL] [COLOR= #007700]{[/COLOR]
        [URL="http://www.php.net/return"]return[/URL] false[COLOR= #007700];
    }
}[/COLOR]
?>


die gebruik ik altijd smile
0
Berichten
5.897
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
Rogier schreef:
[COLOR= #0000BB]<?php[/COLOR]
[COLOR= #007700]function[/COLOR] checkmail[COLOR= #007700]([/COLOR][COLOR= #0000BB]$mail[/COLOR][COLOR= #007700]) {[/COLOR]
    [URL="http://www.php.net/if"]if[/URL][COLOR= #007700]([/COLOR][URL="http://www.php.net/preg_match"]preg_match[/URL][COLOR= #007700]([/COLOR][COLOR= #DD0000]~^[a-z0-9][a-z0-9_.-]*@([a-z0-9]+.)*[a-z0-9][a-z0-9-]+.([a-z]{2,6})$~i[/COLOR][COLOR= #007700],[/COLOR] [COLOR= #0000BB]$mail[/COLOR][COLOR= #007700])) {[/COLOR]
        [URL="http://www.php.net/return"]return[/URL] true[COLOR= #007700];
    }[/COLOR]
    [URL="http://www.php.net/else"]else[/URL] [COLOR= #007700]{[/COLOR]
        [URL="http://www.php.net/return"]return[/URL] false[COLOR= #007700];
    }
}[/COLOR]
?>
die gebruik ik altijd smile
Maar dan werkt sgfvswfxcdggbd@xfgcxgxvdbrghev.be ook confused
0
Berichten
3.314
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
Ja dus? Das toch niet erg? Als ik een website dfbrefwegwf.com heb ben ik blij als ik daarmee ook kan inloggen....
0
Berichten
35.796
Reputatie
1
Punten
0,00
Lid sinds
Laatst gezien
Ja je kunt van alles zelf maken, maar je kunt ook gewoon filter_var($email, FILTER_VALIDATE_EMAIL) gebruiken clown
[COLOR= #0000BB]<?php
$email[/COLOR] [COLOR= #007700]=[/COLOR] [COLOR= #DD0000]marjolein@marjolein.nl[/COLOR][COLOR= #007700];[/COLOR]
[URL="http://www.php.net/if"]if[/URL][COLOR= #007700]([/COLOR]filter_var[COLOR= #007700]([/COLOR][COLOR= #0000BB]$email[/COLOR][COLOR= #007700],[/COLOR] FILTER_VALIDATE_EMAIL[COLOR= #007700]))
{[/COLOR]
    
    [URL="http://www.php.net/echo"]echo[/URL] [COLOR= #DD0000]goed![/COLOR][COLOR= #007700];
    
}[/COLOR]
[URL="http://www.php.net/else"]else[/URL]
[COLOR= #007700]{[/COLOR]
    
    [URL="http://www.php.net/echo"]echo[/URL] [COLOR= #DD0000]fout :-([/COLOR][COLOR= #007700];
    
}[/COLOR]
0
Marjolein

Lid · Topicstarter

Berichten
15.446
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
Rogier schreef:
[COLOR= #0000BB]<?php[/COLOR]
[COLOR= #007700]function[/COLOR] checkmail[COLOR= #007700]([/COLOR][COLOR= #0000BB]$mail[/COLOR][COLOR= #007700]) {[/COLOR]
    [URL="http://www.php.net/if"]if[/URL][COLOR= #007700]([/COLOR][URL="http://www.php.net/preg_match"]preg_match[/URL][COLOR= #007700]([/COLOR][COLOR= #DD0000]~^[a-z0-9][a-z0-9_.-]*@([a-z0-9]+.)*[a-z0-9][a-z0-9-]+.([a-z]{2,6})$~i[/COLOR][COLOR= #007700],[/COLOR] [COLOR= #0000BB]$mail[/COLOR][COLOR= #007700])) {[/COLOR]
        [URL="http://www.php.net/return"]return[/URL] true[COLOR= #007700];
    }[/COLOR]
    [URL="http://www.php.net/else"]else[/URL] [COLOR= #007700]{[/COLOR]
        [URL="http://www.php.net/return"]return[/URL] false[COLOR= #007700];
    }
}[/COLOR]
?>
die gebruik ik altijd smile
Bedankt Rogier!

@maartenl: dat maakt niet uit, ze moeten wel een geldig emailadres invullen want ze krijgen eerst een mail met een bevestigingslink waarop ze moeten klikken yummie
@Lennard: die code snap ik niet bloos
0
Berichten
35.796
Reputatie
1
Punten
0,00
Lid sinds
Laatst gezien
Wat snap je niet? filter_var() is een functie die verschillende soorten tekst kan controleren, waaronder dus emailadressen als je FILTER_VALIDATE_EMAIL als 2e argument meegeeft.

Eventueel kun je hem ook zo gebruiken als je dat makkelijker vindt:

[COLOR= #0000BB]<?php[/COLOR]
[COLOR= #007700]function[/COLOR] checkmail[COLOR= #007700]([/COLOR][COLOR= #0000BB]$email[/COLOR][COLOR= #007700])
{[/COLOR]
    
    [URL="http://www.php.net/return"]return[/URL] filter_var[COLOR= #007700]([/COLOR][COLOR= #0000BB]$email[/COLOR][COLOR= #007700],[/COLOR] FILTER_VALIDATE_EMAIL[COLOR= #007700]);
    
}[/COLOR]

[COLOR= #FF8000]// dan wordt dit dus je code:[/COLOR]
[COLOR= #0000BB]$email[/COLOR] [COLOR= #007700]=[/COLOR] [COLOR= #DD0000]marjolein@marjolein.nl[/COLOR][COLOR= #007700];[/COLOR]

[URL="http://www.php.net/if"]if[/URL][COLOR= #007700]([/COLOR]checkmail[COLOR= #007700]([/COLOR][COLOR= #0000BB]$email[/COLOR][COLOR= #007700]))
{[/COLOR]
    
    [URL="http://www.php.net/echo"]echo[/URL] [COLOR= #DD0000]goed![/COLOR][COLOR= #007700];
    
}[/COLOR]
[URL="http://www.php.net/else"]else[/URL]
[COLOR= #007700]{[/COLOR]
    
    [URL="http://www.php.net/echo"]echo[/URL] [COLOR= #DD0000]fout :-([/COLOR][COLOR= #007700];
    
}[/COLOR]
0
Marjolein

Lid · Topicstarter

Berichten
15.446
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
Ja maar moet dit $email = marjolein@marjolein.nl; dan $email = ($_POST[email]) worden of zo?
0
Berichten
3.112
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
$email = $_POST[email];
0
Berichten
35.796
Reputatie
1
Punten
0,00
Lid sinds
Laatst gezien
Dat kan, je kunt het ook direct invullen:

[COLOR= #0000BB]<?php[/COLOR]
[COLOR= #007700]function[/COLOR] checkmail[COLOR= #007700]([/COLOR][COLOR= #0000BB]$email[/COLOR][COLOR= #007700])
{[/COLOR]
    
    [URL="http://www.php.net/return"]return[/URL] filter_var[COLOR= #007700]([/COLOR][COLOR= #0000BB]$email[/COLOR][COLOR= #007700],[/COLOR] FILTER_VALIDATE_EMAIL[COLOR= #007700]);
    
}[/COLOR]

[COLOR= #FF8000]// dan wordt dit dus je code:[/COLOR]
[URL="http://www.php.net/if"]if[/URL][COLOR= #007700]([/COLOR]checkmail[COLOR= #007700]([/COLOR][COLOR= #0000BB]$_POST[/COLOR][COLOR= #007700][[/COLOR][COLOR= #DD0000]email[/COLOR][COLOR= #007700]]))
{[/COLOR]
    
    [URL="http://www.php.net/echo"]echo[/URL] [COLOR= #DD0000]goed![/COLOR][COLOR= #007700];
    
}[/COLOR]
[URL="http://www.php.net/else"]else[/URL]
[COLOR= #007700]{[/COLOR]
    
    [URL="http://www.php.net/echo"]echo[/URL] [COLOR= #DD0000]fout :-([/COLOR][COLOR= #007700];
    
}[/COLOR]
0
Marjolein

Lid · Topicstarter

Berichten
15.446
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
Oke bedankt, hij werkt Lennard smileAlleen hiermee kun je dus ook een fakeadres zoals bvejhgflehf@sdnfkjhwewtgy.com invullen maar goed dat maakt niet zoveel uit. ik werk toch met een bevestigingsmail.
0
Berichten
6.722
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
Dat maakt echt helemaal niks uit. Op jouw manier kon henk@gdfigdshuoifsihosdafjiosdf.nl niet, maar wat maakt dat uit als gdfsbngdkfmsdngifjdnfs.domein.nl wel kan?
0
Berichten
3.314
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
Je kúnt de host checken (dus alles na de @ selecteren) file_get_contents() doen en dan kijken of de inhoud NIET gelijk is aan de inhoud als de pagina niet bestaat (wat daar staat kun je uitvinden door een niet bestaande in te vullen en de file_get_contents() te echoèn)

En als die tekst er NIET staat dan bestaat het domein WEL en dat is ongeveer het verste dat je kunt gaan, de dingen voor de @ kun je niet checken.
0
Berichten
6.722
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
Volgens jou mag ik dus geen email adres hebben met een domein waar geen website op staat? En zoals ik al zei: Dit is nutteloos.
0

Jouw reactie

Deel je idee, stel een vraag of help een ander verder.

Editor laden…

Praat mee met de One2xs-community.

Inloggen om te reageren