E-mail validation php > hulp nodig bij aanpassing in script

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

N van der Peijl

N van der Peijl

13/11/2013 11:16:21
Quote Anchor link
Hallo,

Ik heb een klein probleem met de e-mail validatie van een bestelformulier.
Alle e-mailadressen met een '-' na het @ worden niet geaccepteerd.
Ik weet alleen niet waar ik nu het '-' moet plaatsen om te zorgen dat de e-mailadressen met een '-' ook worden geaccepteerd.

Ben geen held met php scripts dus hoop op jullie hulp en uitleg. Heb al gezocht op het internet en forum maar kom er gewoonweg niet zo goed uit. Al een aantal dingen geprobeerd maar lukt ook niet helaas.

Hieronder mijn script:

$userPattern = '[0-9a-z\\.]+';
$domainPattern = '[0-9a-z\\.]+\\.[a-z-]+';
$isValid = preg_match('/'.$userPattern.'@'.$domainPattern.'/-', $email);

Alvast bedankt!
 
PHP hulp

PHP hulp

24/12/2024 00:03:13
 
Frank Nietbelangrijk

Frank Nietbelangrijk

13/11/2013 11:23:17
Quote Anchor link
PHP heeft daar tegenwoordig de functie filter_var voor.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?php
if(filter_var('[email protected]', FILTER_VALIDATE_EMAIL))
    echo 'dit is een geldig emailadres';
?>
 
Kris Peeters

Kris Peeters

13/11/2013 11:28:20
Quote Anchor link
Dat is handig.

Maak er trouwens zo'n element van; dan controleert de webbrowser ook mee.

<input type="email" placeholder="e-mail">
 
N van der Peijl

N van der Peijl

13/11/2013 11:29:30
Quote Anchor link
Bedankt maar bovenstaande lijkt me dan niet in lijn met m'n script?
Hieronder het volledige script. Het lijkt mij dat ik het - moet plaatsen in het $userPattern gedeelte. Maar heb dat geprobeerd en dat wordt niet gepakt.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
<?php

/**
 * Utility class for validation
 * @author Dual Infinity
 *
 */

class ValidationUtility {
    
    /**
     * Checks whether an email address is validly formatted
     * @param string $email
     * @return bool
     */

    public static function isValidEmail($email) {
        $email = strtolower($email);
        
        $userPattern = '[0-9a-z\\.]+';
        $domainPattern = '[0-9a-z\\.]+\\.[a-z-]+';
        $isValid = preg_match('/'.$userPattern.'@'.$domainPattern.'/-', $email);
        
        return $isValid;
    }

    
    public static function formatPrice ($float, $html = true) {
        $currency = ($html) ? '&euro;' : '€';
        return str_replace('.', ',', sprintf($currency.' %0.2f', $float));
    }
}


?>
 
- Ariën  -
Beheerder

- Ariën -

13/11/2013 11:33:48
Quote Anchor link
Die hele patterns en preg_match heb je niet meer nodig.
Filter_var doet alles wat je namelijk wilt.
Gewijzigd op 13/11/2013 11:34:39 door - Ariën -
 
Kris Peeters

Kris Peeters

13/11/2013 11:34:20
Quote Anchor link
Okay, dan kan je dit doen:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
<?php
...
public static function isValidEmail($email) {
  return filter_var($email, FILTER_VALIDATE_EMAIL);
}
...

?>
 
N van der Peijl

N van der Peijl

13/11/2013 11:48:10
Quote Anchor link
Bedankt, deze werkt inderdaad. Niet gevoelig voor spam etc?
 
- Ariën  -
Beheerder

- Ariën -

13/11/2013 11:53:38
Quote Anchor link
N van der Peijl op 13/11/2013 11:48:10:
Bedankt, deze werkt inderdaad. Niet gevoelig voor spam etc?

Ik zie geen verband met het valideren van een mailadres en spam. Verder is de validatie prima.
 
Ruben Vincenten

Ruben Vincenten

14/11/2013 19:28:40
Quote Anchor link
Je kan ook de functie getmxrr gebruiken om te controleren of een domeinnaam bestaat. In de reacties op de pagina http://php.net/manual/en/function.getmxrr.php staat een ellenlang stuk code wat uitlegt hoe je met SMTP commando's kan controleren of een emailadres bestaat. Let echter wel op dat dit veel server to server verkeer kan veroorzaken (een hacker kan bijvoorbeeld een DDOS aanval doen en een miljoen emailadressen laten controleren. Je hebt dan ook nog eens kans om op een email blacklist te komen).
 



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.